- Yii 教程
 - Yii - 主页
 - Yii - 概述
 - Yii - 安装
 - Yii - 创建页面
 - Yii - 应用程序结构
 - Yii - 入口脚本
 - Yii - 控制器
 - Yii - 使用控制器
 - Yii - 使用动作
 - Yii - 模型
 - Yii - 小部件
 - Yii - 模块
 - Yii - 视图
 - Yii - 布局
 - Yii - 资产
 - Yii - 资产转换
 - Yii - 扩展
 - Yii - 创建扩展
 - Yii - HTTP 请求
 - Yii - 响应
 - Yii - URL 格式
 - Yii - URL 路由
 - Yii - URL 规则
 - Yii - HTML 表单
 - Yii - 验证
 - Yii - 临时验证
 - Yii - AJAX 验证
 - Yii - 会话
 - Yii - 使用闪存数据
 - Yii - cookie
 - Yii - 使用 Cookie
 - Yii - 文件上传
 - Yii - 格式化
 - Yii - 分页
 - Yii - 排序
 - Yii - 属性
 - Yii - 数据提供者
 - Yii - 数据小部件
 - Yii - 列表视图小部件
 - Yii - GridView 小部件
 - Yii - 活动
 - Yii - 创建事件
 - Yii - Behave
 - Yii - 创建Behave
 - Yii - 配置
 - Yii - 依赖注入
 - Yii - 数据库访问
 - Yii - 数据访问对象
 - Yii - 查询生成器
 - Yii - 活动记录
 - Yii - 数据库迁移
 - Yii - 主题化
 - Yii - RESTful API
 - Yii - RESTful API 的实际应用
 - Yii - 字段
 - Yii - 测试
 - Yii - 缓存
 - Yii - 片段缓存
 - Yii - 别名
 - Yii - 日志记录
 - Yii - 错误处理
 - Yii - 身份验证
 - Yii - 授权
 - Yii - 本地化
 - Yii-Gii
 - Gii – 创建模型
 - Gii – 生成控制器
 - Gii – 生成模块
 
- Yii 有用的资源
 - Yii - 快速指南
 - Yii - 有用的资源
 - 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作为Behave被附加。only 属性指定 ACF 应仅应用于 about 和 contact 操作。所有其他操作不受访问控制。规则属性列出了访问规则。所有访客(具有“?”角色)都将被允许访问“关于”操作。所有经过身份验证的用户(具有“@”角色)都将被允许访问联系人和有关操作。
如果您访问 URL http://localhost:8080/index.php?r=site/about,您将看到该页面,但如果您打开 URL http://localhost:8080/index.php?r= site/contact,您将被重定向到登录页面,因为只有经过身份验证的用户才能访问联系操作。
访问规则支持许多选项 -
允许- 定义这是“允许”还是“拒绝”规则。
actions - 定义该规则匹配哪些操作。
控制器- 定义此规则匹配哪些控制器。
角色- 定义此规则匹配的用户角色。两个特殊角色得到认可 -
?− 匹配访客用户。
@ - 匹配经过身份验证的用户。
ips - 定义此规则匹配的 IP 地址。
verbs - 定义此规则匹配的请求方法(POST、GET、PUT 等)。
matchCallback - 定义一个 PHP 可调用函数,应调用该函数来检查是否应应用此规则。
DenyCallback - 定义一个 PHP 可调用函数,当此规则拒绝访问时应调用该函数。
密码
步骤 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);
}
步骤 2 - 输入 URL http://localhost:8080/index.php?r=site/auth,您将看到以下内容。
