使用 Laravel 5.2 的 Authenticated() 方法

Using Laravel 5.2's Authenticated() Method

我正在使用 Laravel 5.2 的默认身份验证,并且在使用框架的 authenticated() 方法时遇到了一些问题。该方法对于 运行 代码在身份验证成功后但在加载任何后续页面之前很有用。认证成功会触发AuthController中的authenticated()方法,我定义如下:

protected function authenticated() {
        session(['loggedIn' => 'show']);
        return redirect('/home');
}

如我们所见,它可以用于设置主页首次加载时所需的会话变量(但不应在每次重新加载主页时重置)。

在我的例子中,我使用 loggedIn 在用户登录或注册后每个会话只显示一次欢迎 div。为此,我在主页上添加了以下 PHP:

function displayWelcome() {
    if (session('loggedIn') == 'show') {
        echo '<div class="container" name="loggedIn" id="loggedIn">';
        session(['loggedIn' => 'hide']);
    } else {
        echo '<div class="container" name="loggedIn" id="loggedIn" hidden>';
    }
}

目前,此代码在现有用户登录时工作正常。

但是,它并不完全适用于用户注册。它确实成功重定向到主页,但欢迎 div 根本没有出现。奇怪的是,当我 echo session('loggedIn') before 调用 displayWelcome() 函数时,它在注册后输出 "hide" (并正确显示 "show"登录后)。我看不出它是如何获取值 "hide" 以及为什么它没有正确打开 div.

有什么提示吗?

您可以从此处找到的 RegistersUsers 特征覆盖 register 方法:

\Illuminate\Foundation\Auth\RegistersUsers

在您的 Auth 控制器中使用以下方法并在其中调用您的自定义代码:

/**
     * Handle a registration request for the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function register(Request $request)
    {
        $validator = $this->validator($request->all());

        if ($validator->fails()) {
            $this->throwValidationException(
                $request, $validator
            );
        }

        Auth::guard($this->getGuard())->login($this->create($request->all()));

        return redirect($this->redirectPath());
    }