Yii2: Как точно работает аутентификация пользователя?

Я не понимаю 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.

Я могу думать об одном в этот момент, может добавить другие вещи позже.