Laraval
自带的用户认证系统Auth
非常强大易用, 若想在用户登录时对禁用的用户进行登录时的限制, 那么就需要重写项目目录下\app\Http\Controllers\Auth\LoginController.php
的login
方法;
你可以在LoginController
中看到该类中的一行 use AuthenticatesUsers;
原login
方法就定义在AuthenticatesUsers
这个trait
里面.你可以在这个trait
中看到:
/**
* Handle a login request to the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse
*/
public function login(Request $request)
{
$this->validateLogin($request);
// If the class is using the ThrottlesLogins trait, we can automatically throttle
// the login attempts for this application. We'll key this by the username and
// the IP address of the client making these requests into this application.
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
if ($this->attemptLogin($request)) {
return $this->sendLoginResponse($request);
}
在登录时, 系统先通过validateLogin
方法判断传输过来的账号密码是否符合预设的规则;
在通过hasTooManyLoginAttempts
方法判断输入密码错误次数是否达到上限, 账号是否被冻结等
最后再通过attemptLogin
方法去验证账号密码的正确性, 进行登录;
所以, 当我们需要增加用户登录的验证时, 只需要在第三步中加入 需要验证的内容即可;
if ($this->attemptLogin($request)) {
if(Auth::user()->state==2){
die('您的账户已被禁止,请联系管理员');
};
return $this->sendLoginResponse($request);
}
本文为Larwas原创文章,转载无需和我联系,但请注明来自larwas博客 https://larwas.com
最新评论