在我的Laravel 5.2项目中,我有用户表,其状态字段有3个值。值为 0 =无效,1 =有效,2 =已付。登录后我想检查用户是否有状态1或3. 如果他们属于状态1或3,那么我需要重定向到仪表板。没有其他 。以下是我在AuthController中的getcredential方法。
protected function getCredentials($request) {
return $request->only($this->loginUsername(), 'password') + ['status' => 1];
}
如何在此检查这两种状态。 提前谢谢。
答案 0 :(得分:1)
我找到了解决这个问题的方法。我按原样保留了getCredential方法。
protected function getCredentials($request) {
return $request->only($this->loginUsername(), 'password') +
['status' => 1];
}
我在AuthController的登录功能中编写了以下代码。
if($user->status == 3){
if(Auth::attempt(['email' => $request['email'], 'password' => $request['password'], 'status' => 3,]))
{
$fallback_url = '/dashboard';
$intended_url =
Redirect::intended($fallback_url)->getTargetUrl();
return response()->json(['auth' => true, 'intended' => $intended_url]);
}
}
现在状态为1且状态= 3的用户可以登录仪表板。
答案 1 :(得分:0)
凭据的值不需要是静态值,您还可以提供一个Closure
,由用户提供程序在其用于检查凭据的查询上执行。{/ p>
以下应该可以解决问题:
protected function getCredentials($request) {
return $request->only($this->loginUsername(), 'password') + ['status' => function($query) {
$query->whereIn('status', [1, 3]);
}];
}