扩展 laravel 登录验证

Extend laravel login validation

如何使用额外的验证规则扩展 laravel 登录。我想检查用户是否具有成功登录的角色,如果没有角色附加到用户我想拒绝登录过程。

我看到在 LoginController 中我可以覆盖登录方法

public function login(\Illuminate\Http\Request $request)
{
    //dd($this->validateLogin($request));
    parent::login($request);
}

但我不知道如何取回用户对象

如果我理解正确,用户必须验证自己,然后你要检查角色。它不需要具有特定的角色。如果是这样,您可以像这样覆盖 LoginController 上的 authenticated() 方法:(您必须在文件顶部编写 use Illuminate\Http\Request;

/**
 * The user has been authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
protected function authenticated(Request $request, $user)
{
    if(empty($user->role)) {
        $this->guard()->logout();
        return back()->withErrors(['There is no role specified']);
    }
}

如果您希望用户具有特定角色,您可以覆盖 LoginController 中的 credentials() 方法:

protected function credentials(Request $request)
{
    $credentials = $request->only($this->username(), 'password');
    $credentials['role'] = 'requiredRole';
    return $credentials;
}