首页 > 解决方案 > Laravel 5.7 session flash message for login间歇性工作

问题描述

我正在使用 Laravel 5.7,并且已经成功地为使用手动身份验证的用户解决了登录和注销问题。

我在我的登录刀片模板中有这个提示错误凭据:

@if (Session::has('status'))
  <div class="alert alert-danger text-center" role="alert">
    {!! Session::get('status') !!}
  </div>
@endif

这是在我的控制器中,确定不接受提供的用户名和密码后:

$request->session()->flash('status', 'These credentials are not working.<br>Refresh and try again.');
  return redirect()->back()->withInput();

当它工作时,我会收到状态消息并提供用户名。我想不通的是接下来会发生什么。我已经尝试了以下所有方法,有时该消息会再次显示,有时则不会。它从未连续显示超过两次。而一旦它不显示,它似乎有一段时间不显示。

即使我清除 cookie,它似乎也没有任何区别。我在 .env 和配置文件中仔细检查了我的 cookie 和会话设置。我没有收到任何错误消息。我正在使用带有mysql的数据库。我使用 migrate 来构建会话表。

数据库中记录的会话没有不恰当地重复。最后一个活动字段正在适当更新。

当我在 Chrome 中查看会话 cookie 时,每次提交后它都会发生变化。我不是指 XSRF-TOKEN,我指的是会话 cookie。我很惊讶它正在改变。

我认为我的代码没问题,但我在某处设置错误。我应该去哪里看?

更新:如果我选中“在 DevTools 打开时禁用缓存”,那么效果会更好。我可以提交错误的凭据,它会显示消息并且用户名在该字段中。如果我输入密码并提交它会重定向到一个干净的登录,没有消息,没有数据。

如果我收到消息然后手动将浏览器刷新到新的登录名,我可能会在一半的时间里再次收到消息。但随后我将再次尝试同样的事情(刷新,再试一次)并再次获得多次重定向到登录页面,而没有数据/消息。

最终解决方案: 我将会话处理更改为file.

标签: session-cookieslaravel-5.7

解决方案


而不是闪烁尝试使用消息重定向:

return redirect()->back()->with('status', 'These credentials are not working.<br>Refresh and try again.'); 

推荐阅读