【发布时间】:2021-02-28 18:15:59
【问题描述】:
我正在添加一些实现,允许用户在管理面板中更新密码,前提是他们提供了正确的当前密码。
我面临的问题是更新密码时的使用被注销,因为password_hash 在会话中不再匹配,我知道这一点,因为我已经注释掉了中间件AuthenticateSession。
我可以看到这里有一个password_hash的会话值检查,带有默认驱动程序的后缀。
if ($request->session()->get('password_hash_'.$this->auth->getDefaultDriver()) !== $request->user()->getAuthPassword()) {
$this->logout($request);
}
似乎我总是打这个,尽管在更新密码时我将会话变量设置为用户的新密码。
$user->password = Hash::make($request->input('password'));
$user->save();
auth()->guard('web')->login($user, true);
$request->session()->put([
'password_hash_' . auth()->getDefaultDriver() => $user->getAuthPassword(),
]);
即便如此,我还是使用了注销方法,显然我不想删除中间件,因为它在帐户被盗时很有用。
【问题讨论】:
标签: laravel authentication jetstream