session-cookies - 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
.
解决方案
而不是闪烁尝试使用消息重定向:
return redirect()->back()->with('status', 'These credentials are not working.<br>Refresh and try again.');
推荐阅读
- nginx - nginx 代理通行证不适用于 docker 容器
- css - 如何使最后一行占据容器的剩余高度?
- uwp - 如何将调试选项设置为“Step into Specific”?
- java - 版本或其他内容的 Java/Gradle 错误
- javascript - 即使设置了项目,调用时反应 useState 项目似乎是空的
- javascript - Map 函数不返回 React JSX 中的项目
- javascript - 如何在 MongoDB 中过滤子文档?
- sql-server - 从不同的服务器查询地理数据类型
- c# - 我在 c#/UWP 中需要我的域控制器的唯一标识符
- c++ - 尝试使用 clang++ v12 将两个 C++20 模块一起构建为一个模块