Laravel5 Session :: flash()持续存在的请求多于一个

时间:2016-08-24 07:09:50

标签: php flash session laravel-5

我正在解决一个非常奇怪的问题:

我尝试登录用户,如果凭据不正确,我将消息刷入Session并将用户bach重定向到登录页面。显示消息,闪烁进入会话。无论如何,在我重新加载页面后,会话中仍然有消息,但它应该消失。

你可以帮我一下吗? 这是我的代码,我将消息闪存到会话中:

  public static function verify($email, $password) {

    $verified = Auth::user()->attempt([
        'email' => $email,
        'password' => $password
    ]);

    if($verified) {
            $user = Auth::user()->get();
            Session::flash('message', [
                'title' => trans('user.logged_in'.($user->sex != null ? '_'.$user->sex : '')),
                'status' => 'success'
            ]);
            return redirect(route('adminDashboard'));
        }
        else {
            Session::flash('message', [
                'title' => trans('user.bad_credentials'),
                'status' => 'error'
            ]);
            return redirect()->back();
        }

    return $verified;

}

以下是页面代码,显示在地址上,我在重定向后,在错误凭据(redirect()->back()

之后
@if(Session::has('message'))
    <?php
    $message = Session::get('message');
    $status = isset($message['status']) ? $message['status'] : 'success';

    $messageString = '';
    if(isset($message['title']) && $message['title'] != '')
        $messageString = '"'.$message['title'].'"';

    if(isset($message['text']) && $message['text'] != '')
        $messageString .= ($messageString != '' ? ',' : '').'"'.$message['text'].'"';

    ?>
    <script>
        $(document).ready(function () {
            Notify({!! $messageString !!}).{{ $status }}();
        });
    </script>
@endif

我对这种行为感到很困惑。在我显示消息之后,我还尝试在View中手动调用Session::forget('message'),但消息从会话中消失,如果我在此打印Session :: all()之后立即消息,但在我重新加载之后,消息再次在Session中

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

Chang以下一行:

return redirect(route('adminDashboard'));

return redirect()->to('/adminDashboard');

我在我的项目中使用相同的方法并且工作正常。