Php 在Laravel 5上使用默认身份验证登录时检查其他列

Php 在Laravel 5上使用默认身份验证登录时检查其他列,php,laravel-5,Php,Laravel 5,这是我第一次尝试使用php框架,所以我决定使用Laravel5 但我有一个问题:我想在登录时检查用户状态,因此只有enabled==1用户才能登录。我检查了AuthenticatesAndRegistersUsers.php,并遵循了Guard.php上的一些函数,但我不明白它在哪里检查实际列,以及我应该在哪里检查启用了列的有些人可能不同意我的观点,但我会制作自己的Auth控制器。默认值太模糊了。如果您想删除laravel随php artisan fresh附带的所有内容,这将删除Auth控制器

这是我第一次尝试使用php框架,所以我决定使用Laravel5


但我有一个问题:我想在登录时检查用户状态,因此只有
enabled==1
用户才能登录。我检查了AuthenticatesAndRegistersUsers.php,并遵循了Guard.php上的一些函数,但我不明白它在哪里检查实际列,以及我应该在哪里检查启用了
列的

有些人可能不同意我的观点,但我会制作自己的Auth控制器。默认值太模糊了。如果您想删除laravel随
php artisan fresh
附带的所有内容,这将删除Auth控制器和其他一些东西

创建自己的登录方法非常简单,登录方法如下所示:

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    $remember = $request->get('remember') == 'on' ? true : false;

    if(\Auth::attempt($credentials, $remember)) {
        $enabled = \Auth::user()->enabled;

        if(!$enabled) {
            \Auth::logout();
            return redirect()->withMessage('User not enabled to login');
        }
    }
}
检查文档中的其他身份验证功能:

在尝试以下操作之前,您还可以在数据库中检查用户:

$enabled = User::where('email', '=', $email)->first()->enabled;
if($enabled && \Auth::attempt($credentials, $remember)) {
   ... redirect to logged in page.
根据链接中的引用,假设在登录期间需要检查另一列approved,则需要在loginController中添加以下功能

 public function credentials(Request $request)
    {
        $credentials = $request->only($this->username(), 'password');
        $credentials = array_add($credentials, 'approved', '1');
        return $credentials;
    }

您可以在默认LoginController中使用经过身份验证的方法。每当用户通过配置的身份验证保护时,就会调用此方法

/**
*用户已通过身份验证。
*
*@param\light\Http\Request$Request
*@param混合$user
*@返回混合
*/
已验证的受保护函数(请求$Request,$user)
{
//自定义逻辑
如果($user->isDisabled()){
$logoutResponse=$this->logout($request);
if($logoutResponse instanceof RedirectResponse){
$logoutResponse->withErrors(_uu('users.Your account已停用');
}
返回$logoutResponse;
}
//端自定义逻辑
返回null;
}
通过检查AuthenticatesUsers特征表单Laravel,可以清楚地看出此方法的返回值用于if语句,因此当我们需要默认行为时,只返回null是可以的:

/**
*在用户经过身份验证后发送响应。
*
*@param\light\Http\Request$Request
*@return\light\Http\Response
*/
受保护的函数sendLoginResponse(请求$Request)
{
$request->session()->regenate();
$this->clearloginattests($request);
如果($response=$this->authenticated($request,$this->guard()->user())){
返回$response;
}
返回$request->wantsJson()
?新的响应(“”,204)
:redirect()->designed($this->redirectPath());
}

谢谢,真的,有人应该描述那里使用的整个登录过程,这样我们就可以理解他们为什么这样做,以及这是否是我们应用程序的最佳方法。。。