使用Laravel 5.2的Authenticated()方法

时间:2016-03-30 20:58:59

标签: laravel laravel-5 laravel-5.2

我正在使用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从未出现过。奇怪的是,当我在调用displayWelcome()函数之前回显session('loggedIn')时,它在注册后输出“hide”(并在登录后正确显示“show”)。我没有看到它是如何获取值“隐藏”以及为什么它没有正确打开div。

任何提示?

1 个答案:

答案 0 :(得分:1)

您可以从此处的RegistersUsers trait中覆盖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());
    }