Php 在Laravel 5上使用默认身份验证登录时检查其他列
这是我第一次尝试使用php框架,所以我决定使用Laravel5Php 在Laravel 5上使用默认身份验证登录时检查其他列,php,laravel-5,Php,Laravel 5,这是我第一次尝试使用php框架,所以我决定使用Laravel5 但我有一个问题:我想在登录时检查用户状态,因此只有enabled==1用户才能登录。我检查了AuthenticatesAndRegistersUsers.php,并遵循了Guard.php上的一些函数,但我不明白它在哪里检查实际列,以及我应该在哪里检查启用了列的有些人可能不同意我的观点,但我会制作自己的Auth控制器。默认值太模糊了。如果您想删除laravel随php artisan fresh附带的所有内容,这将删除Auth控制器
但我有一个问题:我想在登录时检查用户状态,因此只有
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());
}
谢谢,真的,有人应该描述那里使用的整个登录过程,这样我们就可以理解他们为什么这样做,以及这是否是我们应用程序的最佳方法。。。