首页 > 其他 > 详细

yii2运行流程

时间:2020-05-21 20:44:51      阅读:58      评论:0      收藏:0      [点我收藏+]

入口文件index.js开始 

通过Application创建app, 并且读入config, 装载扩展和组件

通过request解析被请求的路由
app根据路由创建controller
controller创建action
如果过滤器通过, 则会执行action
action会渲染视图view
view中的内容一般来自于model
渲染的结果通过response返回给客户端
这篇文章写得很清楚了,原文链接:https://blog.csdn.net/alex_my/article/details/54142711

 

以下分析是为了了解yii2 yii\rbac\DbManager的rbac权限怎么统一管理的,比如怎么让所有控制器访问之前都会统一检查权限,而不是使用Yii::$app->user->can()一个一个验证;

统一验证我们可以在yii\filters\AccessControl的beforeAction方法里做统一验证,或者重写一个AccessControl,类似使用yii2-admin自带的rbac管理,注意重写的AccessControl要配置as access指定class,不然会使用默认的yii\filters\AccessControl

技术分享图片技术分享图片

 

 

 

技术分享图片

 

 

yii2权限rbac通过AccessControl.php下面的方法beforeAction过滤是否有权限访问

流程大概为在yii\base\Controller::runAction中会执行 this->beforeAction —> this->ensureBehaviors()到$behaviors

 

技术分享图片

 

$behaviors实际上是AccessControl的对象,attach是其基类ActionFilter中的函数将会执行ActionFilter::beforeFilter,beforeFilter又执行了beforeAction,AccessControl又重载了beforeAction,如下图

 技术分享图片

 

 

最后就是执行AccessControl类下面做验证权限,

技术分享图片

 注意使用别的比如yii2-admin插件的rbac一定要配置as access,指定类AccessControl,不然会默认使用yii\filters\AccessControl的验证方法

技术分享图片

 

yii2运行流程

原文:https://www.cnblogs.com/JahanGu/p/12933381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!