Laravel 5.1中间件用于检查用户的创建日期以更改密码

时间:2015-10-28 08:59:22

标签: authentication laravel-5.1 laravel-middleware

我正在使用Laravel 5.1开发一个webapp,我正在建立身份验证系统,我必须检查用户是否在六个月或更长时间内没有更改密码,我会使用中间件来检查这个,但我没有找到如何正确地做到这一点。我创建了一个全局中间件,但它无法正常工作,因为我无法获得经过身份验证的用户。

我可能需要使用AfterMiddleware来检查密码吗?

2 个答案:

答案 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>