- 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 - 使用 Flash 数据
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 文件上传
- Yii - 格式化
- Yii - 分页
- Yii - 排序
- Yii - 属性
- Yii - 数据提供者
- Yii - 数据小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 创建事件
- Yii - 行为
- Yii - 创建行为
- Yii - 配置
- Yii - 依赖注入
- Yii - 数据库访问
- Yii - 数据访问对象
- Yii - 查询构建器
- Yii - Active Record
- 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 作为行为附加。only 属性指定仅对 about 和 contact 操作应用 ACF。所有其他操作都不受访问控制。rules 属性列出访问规则。所有访客(具有“?”角色)都允许访问**about**操作。所有已认证的用户(具有“@”角色)都允许访问 contact 和 about 操作。
如果访问 URL **https://127.0.0.1:8080/index.php?r=site/about**,将会看到页面,但如果打开 URL **https://127.0.0.1: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 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 **https://127.0.0.1:8080/index.php?r=site/auth**,将会看到以下内容。