Процесс проверки того, что у пользователя достаточно прав для выполнения чего-либо, называется авторизацией . Yii предоставляет ACF (фильтр контроля доступа), метод авторизации, реализованный как yii \ filters \ AccessControl . Модифицировать поведение () функции SiteController —
public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['about', 'contact'], 'rules' => [ [ 'allow' => true, 'actions' => ['about'], 'roles' => ['?'], ], [ 'allow' => true, 'actions' => ['contact', 'about'], 'roles' => ['@'], ], ], ], ]; }
В приведенном выше коде ACF присоединяется как поведение. Единственное свойство указывает, что ACF должен применяться только к действиям about и contact. Все остальные действия не подлежат контролю доступа. Свойство rules содержит список правил доступа. Все гости (с ролью «?») Смогут получить доступ к акции. Всем аутентифицированным пользователям (с ролью «@») будет разрешен доступ к контакту и действиям.
Если вы перейдете по URL-адресу http: // localhost: 8080 / index.php? R = site / about , вы увидите страницу, но если откроете URL-адрес http: // localhost: 8080 / index.php? R = сайт / контакт , вы будете перенаправлены на страницу входа, потому что только авторизованные пользователи могут получить доступ к действию контакта .
Правила доступа поддерживают множество опций —
-
allow — определяет, является ли это правилом «разрешить» или «запретить».
-
действия — определяет, каким действиям соответствует это правило.
-
контроллеры — определяет, каким контроллерам соответствует это правило.
-
role — определяет роли пользователя, которым соответствует это правило. Две специальные роли признаются —
-
? — соответствует гостевой пользователь.
-
@ — соответствует аутентифицированному пользователю.
-
-
ips — определяет IP-адреса, которым соответствует это правило.
-
Глаголы — Определяет, какой метод запроса (POST, GET, PUT и т. д.) соответствует этому правилу.
-
matchCallback — Определяет вызываемую функцию PHP, которая должна вызываться, чтобы проверить, следует ли применять это правило.
-
denyCallback — Определяет вызываемую функцию PHP, которая должна вызываться, когда это правило запрещает доступ.
allow — определяет, является ли это правилом «разрешить» или «запретить».
действия — определяет, каким действиям соответствует это правило.
контроллеры — определяет, каким контроллерам соответствует это правило.
role — определяет роли пользователя, которым соответствует это правило. Две специальные роли признаются —
? — соответствует гостевой пользователь.
@ — соответствует аутентифицированному пользователю.
ips — определяет IP-адреса, которым соответствует это правило.
Глаголы — Определяет, какой метод запроса (POST, GET, PUT и т. д.) соответствует этому правилу.
matchCallback — Определяет вызываемую функцию PHP, которая должна вызываться, чтобы проверить, следует ли применять это правило.
denyCallback — Определяет вызываемую функцию PHP, которая должна вызываться, когда это правило запрещает доступ.
Пароли
Шаг 1 — Yii предоставляет следующие удобные методы для работы с паролями.
public function actionAuth() { $password = "asd%#G3"; //generates password hasg $hash = Yii::$app->getSecurity()->generatePasswordHash($password); var_dump($hash); //validates password hash if (Yii::$app->getSecurity()->validatePassword($password, $hash)) { echo "correct password"; } else { echo "incorrect password"; } //generate a token $key = Yii::$app->getSecurity()->generateRandomString(); var_dump($key); //encrypt data with a secret key $encryptedData = Yii::$app->getSecurity()->encryptByPassword("mydata", $key); var_dump($encryptedData); //decrypt data with a secret key $data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $key); var_dump($data); //hash data with a secret key $data = Yii::$app->getSecurity()->hashData("mygenuinedata", $key); var_dump($data); //validate data with a secret key $data = Yii::$app->getSecurity()->validateData($data, $key); var_dump($data); }
Шаг 2 — Введите URL http: // localhost: 8080 / index.php? R = site / auth , вы увидите следующее.