Я не понимаю Authentication
в Yii2
. В Yii 1
был класс идентификации, где нам нужно работать с методом authentication()
и вызывать CWebUser::login()
для достижения наших целей.
Каковы основные процессы аутентификации в Yii 2
? И как это работает?
Не могли бы вы объяснить следующее:
Чтобы ответить на ваши вопросы, необходимо понять одно: Yii2
предоставляет некоторые вспомогательные классы / интерфейсы для разработчиков, которые легко реализуют аутентификацию пользователей, но не всегда требуется следовать или использовать любой из них. Поэтому мой следующий ответ объясняет поведение некоторых классов по умолчанию .
И всегда является хорошей отправной точкой для просмотра шаблона Yii2 Advanced и исходного кода, чтобы понять рабочий процесс фреймворка, на мой взгляд это удивительно легко читать.
Yii2
предоставляет ряд основных компонентов в статическом контексте, вы всегда можете вызывать их через Yii::$app->
. Одним из основных компонентов является user
, на самом деле это экземпляр yii\web\User
и все магии по умолчанию находятся внутри этого класса.
Кроме того, вы также можете использовать другие основные компоненты. Я не уверен, насколько глубоко вы хотите понять, как это работает, если я не дам вам достаточно глубоких объяснений, я настоятельно рекомендую вам прочитать исходный код. У вас будет исходный код на руке, как только вы создадите composer install
, или перейдите в их github, чтобы получить трассировку кода – https://github.com/yiisoft/yii2/tree/master/framework
Во-первых, у вас должен быть класс User
который реализует IdentityInterface
и расширяет ActiveRecord
, см. Пример в шаблоне Advance: https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/User.php ,
И в вашей конфигурации установите $identityClass
user
компонента в указанный User
класс. Это минимальная настройка для User
.
Затем у вас должен быть контроллер с методом, сопоставленным с URL-адресом запроса, например, «/ login». В этом методе вы должны использовать свой путь для извлечения экземпляра User
– $u
. Это место, где должна быть ваша аутентификация.
Затем вы можете вызвать Yii::$app->user->login($u)
для входа; Yii::$app->user->logout()
для выхода из системы.
После входа в систему вы можете получить текущий экземпляр пользователя через Yii::$app->user->identity
.
Это зависит от вас, в зависимости от ваших потребностей. Шаблон просто дает вам представление о том, как создать класс User
ActiveRecord, но не ограничен его – username
и passwordHash
– это нечто очень распространенное, но вы всегда можете иметь свою собственную схему.
Я не совсем понимаю проблему. Надеюсь, другие могут помочь.
Если вы решили использовать RESTful, поддерживаемый фреймворком, не забудьте реализовать findIdentityByAccessToken()
в вашем классе User
, см. Подробности в http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html.
Я могу думать об одном в этот момент, может добавить другие вещи позже.