【发布时间】:2017-04-19 12:30:03
【问题描述】:
我想 laravel 5.3 登录用户表 status='Active' 但是 status='Inactive' 无法登录。
请帮帮我。非常感谢你们!
【问题讨论】:
标签: laravel-5
我想 laravel 5.3 登录用户表 status='Active' 但是 status='Inactive' 无法登录。
请帮帮我。非常感谢你们!
【问题讨论】:
标签: laravel-5
转到 \vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php 然后更改凭据功能。 并查看此链接https://laracasts.com/discuss/channels/laravel/allowing-only-active-users-to-login。
示例函数链接
受保护的功能凭据(请求 $request) { $crendentials = $request->only($this->username(), 'password'); $credentials['status']='活动'; 返回$凭证; }
【讨论】:
在 Auth/LoginController.php 中添加这个函数
use Illuminate\Http\Request;
protected function credentials(Request $request)
{
return [
$this->username() => $request->get($this->username()),
'password' => $request->get('password'),
'active' => 1
];
}
通过这样做,您实际上覆盖了它。此函数在 AuthenticatesUsers 特征中。
获得相同结果的另一种方法是通过添加覆盖 validateLogin() 函数
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => [
'required',
Rule::exists('users')->where(function ($query) {
$query->where('active', 1);
}),
],
'password' => 'required',
]);
}
到 LoginController.php
【讨论】:
你可以这样试试:
if (Auth::attempt(['email' => $email, 'password' => $password, 'status' => 'Active'])) {
// The user is active, not suspended, and exists.
}
【讨论】: