Yii2: Почему ключ авторизации находится в классе User?

Как видно из заголовка, почему ключ авторизации введен в Yii2? Каковы его основные способы использования и как это полезно для аутентификации?


person Ejaz Karim    schedule 02.10.2014    source источник


Ответы (2)


Основное использование — аутентификация пользователя с помощью куки. Когда вы выбираете, чтобы вас помнили при входе в систему, вас запоминают именно так. Система должна как-то вас идентифицировать и войти в систему. Он может либо сохранить ваше имя пользователя и пароль в файле cookie (что было бы небезопасно), либо запомнить вас другими способами. Это одно из средств. После того, как вы войдете в свое приложение Yii, посмотрите на файл cookie _identity, который он создает. Вы увидите, что ключ auth_key является частью файла cookie.

Файл cookie фактически запоминает $id, $authKey и $duration, комбинацию id\auth_key безопаснее запомнить, чем комбинацию имени пользователя и пароля.

person Mihai P.    schedule 06.10.2014
comment
Почему бы не использовать PHPSESSID и сеанс по умолчанию для запоминания? Я имею в виду, что вы можете установить время ожидания сеанса на неделю или месяц. - person user1561346; 30.01.2015
comment
исследуйте изменение тайм-аута сеанса, вы увидите проблемы с ним. - person Mihai P.; 31.01.2015
comment
Можем ли мы использовать ключ аутентификации для аутентификации клиента в бессессионном приложении? - person Robert Limanto; 24.03.2017
comment
Вы, наверное, можете, да. но это означает, что вам понадобится эта информация для аутентификации пользователя. Я создал API REST (поэтому без сеанса) и использовал JWT для создания токена, которому сервер может доверять. Сервер создает JWT, передает его клиенту, клиент использует его во всех запросах, поэтому сервер доверяет информации в нем, потому что он ее закодировал. - person Mihai P.; 27.03.2017

Как объяснялось ранее, вам нужно реализовать getAuthKey() и validateAuthKey() только в том случае, если ваше приложение использует функцию входа на основе файлов cookie. В этом случае вы можете использовать следующий код для создания ключа auth для каждого пользователя и сохранения его в таблице пользователей:

Более подробную информацию можно найти в официальной документации: https://www.yiiframework.com/doc/guide/2.0/en/security-authentication

person Junaid Atari    schedule 10.06.2018