Yii-承認
ユーザーが何かを行うのに十分な権限を持っていることを確認するプロセスは、 authorization。Yiiは、ACF(アクセス制御フィルター)を提供します。これは、次のように実装された承認方法です。yii\filters\AccessControl。SiteControllerのbehaviors()関数を変更します-
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['about', 'contact'],
'rules' => [
[
'allow' => true,
'actions' => ['about'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['contact', 'about'],
'roles' => ['@'],
],
],
],
];
}
上記のコードでは、ACFが動作としてアタッチされています。onlyプロパティは、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−このルールが一致するユーザーロールを定義します。2つの特別な役割が認識されています-
? −ゲストユーザーと一致します。
@ −認証されたユーザーと一致します。
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、次のように表示されます。
