yii数据库测评(Yii2.0框架behaviors方法使用实例分析)
类别:编程学习 浏览量:1959
时间:2021-10-15 00:47:55 yii数据库测评
Yii2.0框架behaviors方法使用实例分析本文实例讲述了Yii2.0框架behaviors方法使用。分享给大家供大家参考,具体如下:
初学Yii2.0 学习路径:http://www.yii-china.com/
经过各种学习,积累知识点;
(1)控制器 behaviors 过滤数据需要引入如下文件
|
use yii\filters\AccessControl; use yii\filters\VerbFilter; |
首先:什么是过滤器?过滤器就是对不同用户角色的控制;
如(游客->最普通的平民,用户->已经注册的用户,管理员->拥有一切权限)
然而 Yii2自带的权限控制默认只支持两个角色:
- guest(游客,没有登录的,用 ? 表示)
- authenticated (登录了的,用 @ 表示)
在这里我们需要实现的是对这两种不同的角色指定不同的访问权限,就是为他们分配不同的可以访问的控制器或者方法。
目前我们如果直接点击导航栏的Status,我们还是可以在没有登录的情况之下进行发表状态(status),
所以我们需要改一下我们的代码和逻辑,Yii2在这方面的控制做得非常好,
其实实现这个我们只需要修改一下StatusController.php里面的behaviors()方法而已,
在这里面加入一段access设置:
控制器中的代码(1)
|
public function behaviors(){ return [ 'access' => [ 'class' => AccessControl::className(), 'only' => [ 'index' , 'create' , 'update' ], 'rules' => [ // 允许认证用户 [ 'allow' => true, 'roles' => [ '@' ], ], // 默认禁止其他用户 ], ], 'verbs' => [ 'class' => VerbFilter:: className(), 'actions' => [ 'index' => [ 'get' ], //只允许get方式访问 'create' => [ 'post' ], //只允许用post方式访问 'update' => [ 'post' ] ], ], ]; } |
加上access这一段之后,再次点击Status,Yii2就会将未登录的我重定向到登录页面。
重定向的方法如下:
|
'components' => [ 'user' => [ 'identityClass' => 'backend\system\core\UserIdentity' , 'enableAutoLogin' => true, 'loginUrl' => [ 'login/login' ] //此处设置默认登录页,如果未登录就会跳转到该页 ], ... |
用户一旦登录进来之后,我们就可以通过下面这行代码来获取用户的id了:
|
$userid =Yii:: $app ->user->getId(); //获取用户id |
控制器中的案例(2)
|
public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => [ 'logout' , 'signup' , 'change-password' ], 'rules' => [ [ 'actions' => [ 'signup' ], //允许游客注册 'allow' => true, 'roles' => [ '?' ], ], [ 'actions' => [ 'logout' , 'change-password' ], 'allow' => true, //允许用户登出、修改密码 'roles' => [ '@' ], ], ], ], 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'logout' => [ 'post' ], //登出只允许提交方式为post,否则报错 ], ], ]; } |
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/lccjob/p/5057369.html
您可能感兴趣
- yii数据库测评(Yii2.0框架behaviors方法使用实例分析)
- yii2对比springboot(Yii框架函数简单用法分析)
- yii与uniapp交互(Yii框架的路由配置方法分析)
- apache和yii域名配置(yii框架数据库关联查询操作示例)
- python如何使用yield(YII2.0框架行为Behavior深入详解)
- php使用yield处理并发(Yii框架中使用PHPExcel的方法分析)
- yii2对比springboot(Yii框架响应组件用法实例分析)
- yii2支持的数据库(Yii框架日志操作图文与实例详解)
- yii2和laravel框架哪个比较简单(关于Yii中模型场景的一些简单介绍)
- yii2对比springboot(yii2.0框架使用 beforeAction 防非法登陆的方法分析)
- yii2支持的数据库(Yii框架常见缓存应用实例小结)
- yii2对比springboot(Yii框架实现对数据库的CURD操作示例)
- python yield 使用浅析(yii框架使用分页的方法分析)
- 如何让yii2高级模板运行起来(Yii框架Session与Cookie使用方法示例)
- yield方法可以使一个线程停止运行(Yii2.0框架模型添加/修改/删除数据操作示例)
- yii2支持php7.2吗(Yii框架通过请求组件处理get,post请求的方法分析)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
- 记者手记 书记带我去 巡街(记者手记书记带我去)
- 富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元 | 美通社(富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元)
- 二次创业 的富士胶片,在进博会上首次展示完成转型后的全线医疗产品(二次创业的富士胶片)
- 富士胶片 中国 我们对上海的信心没有任何改变(富士胶片中国)
- 赢麻了 富士公布2021年度财报 营利同比增长240(富士公布2021年度财报)
热门推荐
- laravel队列失败原理(Laravel第三方包报class not found的解决方法)
- nginx集群技巧(Vmware部署Nginx+KeepAlived集群双主架构的问题及解决方法)
- 在windows安装docker详细步骤(Docker 部署 Prometheus的安装详细教程)
- ifix退出密码(详解如何在登录过期后跳出Ifram框架)
- python ssh登录服务器(python利用跳板机ssh远程连接redis的方法)
- pythonopt用法(Python语言检测模块langid和langdetect的使用实例)
- 阿里云服务器ecs如何建站(阿里云服务器ECS远程连接Windows实例失败的解决方法)
- 在linux系统中切换成其他用户(如何在Linux命令行与其他用户通信)
- 微信小程序接口返回数据怎么弄(微信小程序页面返回传值的4种解决方案汇总)
- sqlserver判断null(SQL Server索引超出了数组界限的解决方案)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9