Процесс проверки того, что у пользователя достаточно прав для выполнения чего-либо, называется авторизацией . 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 , вы увидите следующее.