2015-07-25 4 views
0

Laravel позволяет аутентифицировать пользователей с помощью remember_token, хранящихся в cookie.Как отключить вход пользователя через запоминающий токен?

В моей таблице user у меня есть столбец active, который является boolean (1, 0).

Если, например, пользователь уволен, вам необходимо отключить его возможность входа в систему; поэтому вы меняете значение active на 0.

Но что вы собираетесь делать с его печеньем?

УВЕДОМЛЕНИЕ! Я написал это очень примитивно! Вопрос в том, как правильно обрабатывать такие ситуации.

+0

Вы можете удалить сеанс для неактивного пользователя или добавить условие для системы входа в систему, где выполняется проверка сеанса. – mcklayin

ответ

1

Поскольку у вас нет способа удалить помните cookie, вам необходимо выполнить проверку в своем приложении, чтобы убедиться, что все пользователи, которые вошли в систему, имеют активный статус.

Один из способов, которым вы могли бы это сделать, - это реализовать слушателя для события auth.login и проверить статус там.

class CheckUserStatusHandler { 
    public function handle($user) { 
    if (!$user->active) Auth::logout($user); 
    } 
} 

метод Выход будет выход из системы пользователя и удалить помните маркер.

Затем зарегистрировать слушателя в вашем EventServiceProvider:

protected $listen = [ 
    'auth.login' => [ 
     CheckUserStatusHandler::class 
    ] 
]; 
0

Похоже, вы должны быть в состоянии переписать AuthenticatesUsers :: getCredentials() в AuthController и добавить статус, чтобы предотвратить их от входа в независимо от печенье?

/** 
* Get the needed authorization credentials from the request, and force the 
* user to be activated in order to be authenticated with the application. 
* 
* @param \Illuminate\Http\Request $request 
* @return array 
*/ 
protected function getCredentials(Request $request) 
{ 
    $credentials = $request->only($this->loginUsername(), 'password'); 

    return array_merge($credentials, [ 
     'status' => 1, 
    ]); 
} 
Смежные вопросы