Yii - Autoryzacja
Proces sprawdzania, czy użytkownik ma wystarczające uprawnienia, aby coś zrobić, nazywa się authorization. Yii zapewnia ACF (filtr kontroli dostępu), metodę autoryzacji zaimplementowaną jakoyii\filters\AccessControl. Zmodyfikuj funkcję behawiorów () kontrolera witryny -
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['about', 'contact'],
'rules' => [
[
'allow' => true,
'actions' => ['about'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['contact', 'about'],
'roles' => ['@'],
],
],
],
];
}
W powyższym kodzie ACF jest dołączone jako zachowanie. Jedyna właściwość określa, że ACF powinien być stosowany tylko do akcji about i contact. Wszystkie inne akcje nie podlegają kontroli dostępu. Właściwość rules wyświetla reguły dostępu. Wszyscy goście (z rolą „?”) Będą mieli dostęp doaboutakcja. Wszyscy uwierzytelnieni użytkownicy (z rolą „@”) będą mieli dostęp do kontaktu i informacji o akcjach.
Jeśli przejdziesz do adresu URL http://localhost:8080/index.php?r=site/about, zobaczysz stronę, ale jeśli otworzysz adres URL http://localhost:8080/index.php?r=site/contact, nastąpi przekierowanie do strony logowania, ponieważ tylko uwierzytelnieni użytkownicy mogą uzyskać dostęp do contact akcja.
Reguły dostępu obsługują wiele opcji -
allow - Określa, czy jest to reguła „zezwalaj” czy „odmawiaj”.
actions - Określa, które akcje pasuje do tej reguły.
controllers - Określa, do których kontrolerów pasuje ta reguła.
roles- Definiuje role użytkowników, do których pasuje ta reguła. Rozpoznawane są dwie specjalne role -
? - pasuje do gościa.
@ - pasuje do uwierzytelnionego użytkownika.
ips - Definiuje adresy IP, do których pasuje ta reguła.
verbs - Określa, która metoda żądania (POST, GET, PUT itp.) Pasuje do tej reguły.
matchCallback - Definiuje wywoływalną funkcję PHP, która powinna zostać wywołana, aby sprawdzić, czy ta reguła powinna zostać zastosowana.
denyCallback - Definiuje wywoływalną funkcję PHP, która powinna być wywołana, gdy ta reguła odmówi dostępu.
Hasła
Step 1 - Yii udostępnia następujące przydatne metody pracy z hasłami.
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 - Wprowadź adres URL http://localhost:8080/index.php?r=site/authzobaczysz, co następuje.