Yii 授权

Yii 授权

验证用户是否具有足够权限来执行某些操作的过程被称为 授权 。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作为一个行为附加上去。唯一的属性指定了ACF只会被应用到about和contact动作上。所有其他的动作不受访问控制。规则属性列出了访问规则。所有的访客(拥有“?”角色)都可以访问about动作。所有认证用户(拥有“@”角色)都可以访问contact和about动作。 如果你打开 http://localhost:8080/index.php?r=site/about 链接,你会看到该页面。但如果你打开 http://localhost:8080/index.php?r=site/contact 链接,你会被重定向到登录页面,因为只有认证用户可以访问contact动作。 访问规则支持许多选项:

  • allow:定义了这是一个“允许”还是“拒绝”的规则。
  • actions:定义此规则匹配的动作。
  • controllers:定义此规则匹配的控制器。
  • roles:定义此规则匹配的用户角色。有两个特殊的角色:
  • ?:匹配一个访客用户。
  • @:匹配一个认证用户。
  • ips:定义此规则匹配的IP地址。
  • verbs:定义此规则匹配的请求方法(POST,GET,PUT等)。
  • matchCallback:定义一个PHP可调用函数,用于检查是否应该应用此规则。 - denyCallback:定义一个PHP可调用函数,当此规则拒绝访问时应该调用。 密码

步骤1 – Yii提供了以下方便的方法来处理密码。

public function actionAuth() {

   password = "asd%#G3";

   //generates password hasghash = 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 keyencryptedData = Yii::app->getSecurity()->encryptByPassword("mydata",key);
   var_dump(encryptedData);

   //decrypt data with a secret keydata = 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 ,你将看到以下内容。

Yii 授权

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程