@@ -28,15 +28,16 @@ Yii поддерживает все выше перечисленные мето
...
@@ -28,15 +28,16 @@ Yii поддерживает все выше перечисленные мето
1. У компонента приложения `user` установите свойство [[yii\web\User::enableSession|enableSession]] равным false.
1. У компонента приложения `user` установите свойство [[yii\web\User::enableSession|enableSession]] равным false.
2. Укажите, какие методы аутентификации вы планируете использовать, настроив поведение `authenticator`
2. Укажите, какие методы аутентификации вы планируете использовать, настроив поведение `authenticator`
в ваших классах REST-контроллеров.
в ваших классах REST-контроллеров.
3. Реализуйте метод [[yii\web\IdentityInterface::findIdentityByAccessToken()]] *в вашем [[yii\web\User::identityClass|классе UserIdentity]]*.
3. Реализуйте метод [[yii\web\IdentityInterface::findIdentityByAccessToken()]] в вашем [[yii\web\User::identityClass|классе UserIdentity]].
Шаг 1 не обязателен, но рекомендуется его все-таки выполнить, так как RESTful API не должны сохранять информацию о состоянии клиента. Когда свойство [[yii\web\User::enableSession|enableSession]]
Шаг 1 не обязателен, но рекомендуется его всё-таки выполнить, так как RESTful API не должен сохранять информацию о
установлено в false, состояние аутентификации пользователя НЕ БУДЕТ постоянно
состоянии клиента. Когда свойство [[yii\web\User::enableSession|enableSession]] установлено в false, состояние
сохраняться между запросами с использованием сессий. Вместо этого аутентификация будет выполняться для каждого запроса, что достигается шагами 2 и 3.
аутентификации пользователя НЕ БУДЕТ сохраняться между запросами с использованием сессий. Вместо этого аутентификация
будет выполняться для каждого запроса, что достигается шагами 2 и 3.
> Подсказка: если вы разрабатываете RESTful API в пределах приложения, вы можете настроить свойство
> Подсказка: если вы разрабатываете RESTful API в пределах приложения, вы можете настроить свойство
[[yii\web\User::enableSession|enableSession]] компонента приложения `user` в конфигурации приложения. Если вы разрабатываете
[[yii\web\User::enableSession|enableSession]] компонента приложения `user` в конфигурации приложения. Если вы
RESTful API как модуль, можете добавить следующую строчку в метод `init()` модуля:
разрабатываете RESTful API как модуль, можете добавить следующую строчку в метод `init()` модуля:
> ```php
> ```php
public function init()
public function init()
{
{
...
@@ -60,7 +61,7 @@ public function behaviors()
...
@@ -60,7 +61,7 @@ public function behaviors()
}
}
```
```
Если вы хотите включить поддержку всех трех описанных выше методов аутентификации, можете использовать `CompositeAuth`:
Если вы хотите включить поддержку всех трёх описанных выше методов аутентификации, можете использовать `CompositeAuth`:
```php
```php
use yii\filters\auth\CompositeAuth;
use yii\filters\auth\CompositeAuth;
...
@@ -107,7 +108,7 @@ class User extends ActiveRecord implements IdentityInterface
...
@@ -107,7 +108,7 @@ class User extends ActiveRecord implements IdentityInterface
будет пытаться аутентифицировать пользователя в своем методе `beforeAction()`.
будет пытаться аутентифицировать пользователя в своем методе `beforeAction()`.
Если аутентификация прошла успешно, контроллер выполнит другие проверки (ограничение частоты запросов, авторизация)
Если аутентификация прошла успешно, контроллер выполнит другие проверки (ограничение частоты запросов, авторизация)
и затем выполнит действие. *Информация о подлинности аутентифицированного пользователя может быть получена из объекта `Yii::$app->user->identity`*.
и затем выполнит действие. Информация об аутентифицированном пользователе может быть получена из объекта `Yii::$app->user->identity`.
Если аутентификация прошла неудачно, будет возвращен ответ с HTTP-кодом состояния 401 вместе с другими необходимыми заголовками
Если аутентификация прошла неудачно, будет возвращен ответ с HTTP-кодом состояния 401 вместе с другими необходимыми заголовками
(такими, как заголовок `WWW-Authenticate` для HTTP Basic Auth).
(такими, как заголовок `WWW-Authenticate` для HTTP Basic Auth).
...
@@ -115,9 +116,9 @@ class User extends ActiveRecord implements IdentityInterface
...
@@ -115,9 +116,9 @@ class User extends ActiveRecord implements IdentityInterface
## Авторизация <a name="authorization"></a>
## Авторизация <a name="authorization"></a>
После аутентификации пользователя вы, вероятно, захотите проверить, есть ли у него или у нее разрешение на выполнение запрошенного
После аутентификации пользователя вы, вероятно, захотите проверить, есть ли у него или у неё разрешение на выполнение запрошенного
действия с запрошенным ресурсом. Этот процесс называется *авторизацией* и подробно описан
действия с запрошенным ресурсом. Этот процесс называется *авторизацией* и подробно описан
в разделе [Авторизация](security-authorization.md).
в разделе «[Авторизация](security-authorization.md)».
Если ваши контроллеры унаследованы от [[yii\rest\ActiveController]], вы можете переопределить
Если ваши контроллеры унаследованы от [[yii\rest\ActiveController]], вы можете переопределить
метод [[yii\rest\Controller::checkAccess()|checkAccess()]] для выполнения авторизации. Этот метод будет вызываться
метод [[yii\rest\Controller::checkAccess()|checkAccess()]] для выполнения авторизации. Этот метод будет вызываться