我正在使用Laravel 5.1开发一个webapp,我正在建立身份验证系统,我必须检查用户是否在六个月或更长时间内没有更改密码,我会使用中间件来检查这个,但我没有找到如何正确地做到这一点。我创建了一个全局中间件,但它无法正常工作,因为我无法获得经过身份验证的用户。
我可能需要使用AfterMiddleware来检查密码吗?
答案 0 :(得分:0)
首先说明/说明您希望用户强制更改密码? 在验证或成功验证后? 那我可以给你一个解决方案
答案 1 :(得分:0)
然后你需要在AuthController
中覆盖postLogin方法public function postLogin(Request $ request){
$credentials = ['email' => $request->email, 'password' => $request->password];
if (Auth::attempt($credentials, $request->has('remember'))) {
if((strtotime(Auth::user()->created_at) < strtotime('6 month ago'))){
return redirect('your-reset-path);//redirect to password reset page
}else{
return redirect()->intended('/');
}
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
}
如果要检查created_at,则可以执行此操作,但是您更喜欢使用带有时间戳的另一个字段(last_password_updated),该字段仅在更改密码时更新,并且在首次创建时更新,它将更有效。< / p>