- 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,您将看到以下内容。