我正在使用 sainttum 来验证水疗应用程序。使用默认的防护和密码提供程序。 登录或用户注册没有问题。一切都运转良好。 问题是当用户登录到一个帐户并注销,然后尝试登录到另一个帐户时,AuthenticateSession 中间件会强制用户注销。但是,当用户刷新页面并尝试再次登录时,一切都会正常工作。如果用户尝试重置密码并再次登录,就会出现此问题。
当我删除这个中间件时,一切都正常。我调试并计算出这些: 当用户注销后尝试登录时,登录将成功并
$request->user()
返回用户信息。但是 AuthenticateSession 中间件比较用户密码和会话密码,由于某种原因它们不相等!事实上会话密码是错误的。然后中间件刷新会话并注销用户。
如果您刷新页面并重试,它们是相同的工作文件。
这是注销方法:
Auth::guard('web')->logout();
if ($request->hasSession()) {
$request->session()->flush();
$request->session()->regenerateToken();
}
发生这个问题是因为我在
auth-sanctum
中间件中使用我的注销路由。通过从 /logout
中间件移出 auth-sanctum
路线,问题得到解决。