Yii - Autorisation
Le processus de vérification qu'un utilisateur dispose des autorisations suffisantes pour faire quelque chose s'appelle authorization. Yii fournit un ACF (Access Control Filter), une méthode d'autorisation implémentéeyii\filters\AccessControl. Modifier la fonction behavior () du SiteController -
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['about', 'contact'],
'rules' => [
[
'allow' => true,
'actions' => ['about'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['contact', 'about'],
'roles' => ['@'],
],
],
],
];
}
Dans le code ci-dessus, ACF est attaché en tant que comportement. La seule propriété spécifie que l'ACF doit être appliquée uniquement aux actions about et contact. Toutes les autres actions ne sont pas soumises au contrôle d'accès. La propriété rules répertorie les règles d'accès. Tous les invités (avec le rôle «?») Seront autorisés à accéder auaboutaction. Tous les utilisateurs authentifiés (avec le rôle «@») seront autorisés à accéder au contact et à propos des actions.
Si vous allez à l'URL http://localhost:8080/index.php?r=site/about, vous verrez la page, mais si vous ouvrez l'URL http://localhost:8080/index.php?r=site/contact, vous serez redirigé vers la page de connexion car seuls les utilisateurs authentifiés peuvent accéder au contact action.
Les règles d'accès prennent en charge de nombreuses options -
allow - Définit s'il s'agit d'une règle "autoriser" ou "refuser".
actions - Définit les actions auxquelles cette règle correspond.
controllers - Définit les contrôleurs auxquels cette règle correspond.
roles- Définit les rôles d'utilisateur auxquels cette règle correspond. Deux rôles spéciaux sont reconnus -
? - correspond à un utilisateur invité.
@ - correspond à un utilisateur authentifié.
ips - Définit les adresses IP auxquelles cette règle correspond.
verbs - Définit la méthode de requête (POST, GET, PUT, etc.) à laquelle cette règle correspond.
matchCallback - Définit une fonction appelable PHP qui doit être appelée pour vérifier si cette règle doit être appliquée.
denyCallback - Définit une fonction appelable PHP qui doit être appelée lorsque cette règle refuse l'accès.
Mots de passe
Step 1 - Yii fournit les méthodes pratiques suivantes pour travailler avec les mots de passe.
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 - Entrez l'URL http://localhost:8080/index.php?r=site/auth, vous verrez ce qui suit.
![](https://assets.edu.lat/yii/images/passwords.jpg)