Yii - Авторизация
Процесс проверки того, что у пользователя достаточно прав для выполнения каких-либо действий, называется authorization. Yii предоставляет ACF (фильтр контроля доступа), метод авторизации, реализованный какyii\filters\AccessControl. Измените функцию behavior () 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 перечисляет правила доступа. Всем гостям (с ролью «?») Будет разрешен доступ кaboutдействие. Всем авторизованным пользователям (с ролью «@») будет разрешен доступ к контакту и действиям.
Если вы перейдете по URL http://localhost:8080/index.php?r=site/about, вы увидите страницу, но если вы откроете URL http://localhost:8080/index.php?r=site/contact, вы будете перенаправлены на страницу входа, потому что только авторизованные пользователи могут получить доступ к contact действие.
Правила доступа поддерживают множество опций -
allow - Определяет, является ли это правилом «разрешить» или «запретить».
actions - Определяет, каким действиям соответствует это правило.
controllers - Определяет, каким контроллерам соответствует это правило.
roles- Определяет роли пользователей, которым соответствует это правило. Признаны две особые роли -
? - соответствует гостевому пользователю.
@ - соответствует аутентифицированному пользователю.
ips - Определяет IP-адреса, которым соответствует это правило.
verbs - Определяет, какому методу запроса (POST, GET, PUT и т. Д.) Соответствует это правило.
matchCallback - Определяет вызываемую функцию PHP, которая должна вызываться для проверки, следует ли применять это правило.
denyCallback - Определяет вызываемую функцию PHP, которая должна вызываться, когда это правило запрещает доступ.
Пароли
Step 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);
}
Step 2 - Введите URL http://localhost:8080/index.php?r=site/auth, вы увидите следующее.