Как выкинуть пользователей при смене пароля в Yii2?
При смене пароля, ранее залогиненные пользователи со старым паролем, остаются залогиненными. Как можно сделать, чтоб при смене пароля, таких пользователей выкидывало из системы?
Действительно, не учел этот момент. Можно проверять тогда так:
// ...
if ( $user && (Yii::$app->session->get('passwordChangeDate') != $user->passwordChangeDate) ) {
// Так даже пользователя обновлять не нужно
Yii::$app->user->logout();
}
// ...
Алексей Петров, все все делаете через конфиге и befofeAction?) Документацию тоже не учили читать и изучать как работает проверка кук, сессий?) Вам для этого надо дор поле) А если изменился email, токен, телефон? Будет второе доп. поле, полагаю?) Или это измените под что-то общее?) Вариантов может быть много) Изучайте Identity который отвечает за это все и по умолчанию привязан к user. Но можно и вынеси это все отдельно.
По моему там для русских написано:
findIdentity(): Этот метод находит экземпляр identity class, используя ID пользователя. Этот метод используется, когда необходимо поддерживать состояние аутентификации через сессии.
findIdentityByAccessToken(): Этот метод находит экземпляр identity class, используя токен доступа. Метод используется, когда требуется аутентифицировать пользователя только по секретному токену (например в RESTful приложениях, не сохраняющих состояние между запросами).
getAuthKey(): Этот метод возвращает ключ, используемый для основанной на cookie аутентификации. Ключ сохраняется в аутентификационной cookie и позже сравнивается с версией, находящейся на сервере, чтобы удостоверится, что аутентификационная cookie верная.
validateAuthKey(): Этот метод реализует логику проверки ключа для основанной на cookie аутентификации.
Максим, При наличии сессии из нее тянется id залогиненного пользователя $session->get($this->idParam)yii\web\User::renewAuthStatus():685 поэтому, как уже написали выше,
Генерация нового auth_key не помогает.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.