本文转自https://www.cnblogs.com/lccjob/p/5057369.html

(1)控制器 behaviors 过滤数据需要引入如下文件

1

2

use yii\filters\AccessControl;

use yii\filters\VerbFilter;

首先:什么是过滤器?过滤器就是对不同用户角色的控制;

如(游客->最普通的平民,用户->已经注册的用户,管理员->拥有一切权限)

然而 Yii2自带的权限控制默认只支持两个角色:

  1. guest(游客,没有登录的,用 表示)

  2. authenticated (登录了的,用 表示)

在这里我们需要实现的是对这两种不同的角色指定不同的访问权限,就是为他们分配不同的可以访问的控制器或者方法。

目前我们如果直接点击导航栏的Status,我们还是可以在没有登录的情况之下进行发表状态(status)

所以我们需要改一下我们的代码和逻辑,Yii2在这方面的控制做得非常好,

其实实现这个我们只需要修改一下StatusController.php里面的behaviors()方法而已,

在这里面加入一段access设置:

控制器中的代码(1)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

public function behaviors(){

    return [

        'access' => [

            'class' => AccessControl::className(),// 使用核心过滤器Access 对执行动作进行验证

            'only' => ['index''create''update'],// 对index create update动作进行验证

            'rules' => [//规则

                // 允许认证用户

                [

                    'allow' => true,// 只允许认证用户进行访问

                    'roles' => ['@'],

                ],

                // 默认禁止其他用户

            ],       

        ],

        'verbs' => [// 设置curd动作 所运行的请求方式

            'class' => VerbFilter:: className(),

            'actions' => [

                 'index'  => [ 'get'],            //只允许get方式访问

                 'create' => [ 'post'],          //只允许用post方式访问

                 'update' => [ 'post']

             ],

        ],

    ];

}

加上access这一段之后,再次点击Status,Yii2就会将未登录的我重定向到登录页面。 

重定向的方法如下:

1

2

3

4

5

6

7

'components' => [

        'user' => [

            'identityClass' => 'backend\system\core\UserIdentity',

            'enableAutoLogin' => true,

            'loginUrl' => ['login/login']      //此处设置默认登录页,如果未登录就会跳转到该页

        ],

        ...

 用户一旦登录进来之后,我们就可以通过下面这行代码来获取用户的id了:

1

$userid=Yii::$app->user->getId();    //获取用户id

  

 控制器中的案例(2)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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,否则报错

                ],

            ],

        ];

    }

Yii2.0 behaviors方法使用相关推荐

  1. php restful 认证,Yii2.0 RESTful API 认证教程

    认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sess ...

  2. Yii2.0 游客访问限制

    最近在用Yii2.0做项目,其中需要实现一个功能:没有登录不能访问部分页面,即游客身份访问限制.查了半天资料,终于找到答案.解决方法如下: 在access里,access即访问的意思,其中有个配置项 ...

  3. Nginx+Apache Yii2.0 配置方案

    最近用Yii2.0框架做了个小项目,虽然项目本身业务逻辑不复杂,但是由于本身业务逻辑的特殊性,在上午9点到12点之间系统访问量会突然上升(浏览量和用户上传文件量).导致系统单纯的部署在Apache下, ...

  4. Yii2.0 RESTful API 之版本控制

    Yii2.0 RESTful API 之版本控制 之前我写过两篇关于 Yii2.0 RESTful API 如何搭建,以及 认证 等处理,但是没有涉及到版本管理,今天就来谈谈版本管理如何实现. 索性就 ...

  5. yii2.0使用ueditior完成上传单张,多张图片,上传视频等操作

    一.前言 由于工作需求需要集成富文本编辑器,本来是想要选用之前用过的WangEditor的,但是考虑到WangEditor还是比较小众,所以最终选择了没用过的Uedtor,这篇文章主要讲述了Yii2. ...

  6. yii2.0框架中自定义接口,实现类的多继承

    一.前言 最近有个需求,比如有A,B,C,D四个文件,原来的逻辑是,A继承B,C继承D.后来由于A和C的逻辑太像,既然如此的话,为什么不把A,C写一起呢,第一是方便维护,第二也是减少无用的代码,说干就 ...

  7. yii2.0 下拉菜单

    第一种方法:ActiveForm 类的 dropDownList 方法(优点,默认使用yii的样式) 1.在控制器的方法里面 ,我们需要拿到数据,一定是 findAll() 或者是 all() 方法的 ...

  8. yii 全选 php,Yii2.0实现的批量更新及批量插入功能示例

    本文实例讲述了Yii2.0实现的批量更新及批量插入功能.分享给大家供大家参考,具体如下: 批量更新 方法1 /** * 批量更新循环周期 * @param array $condition * $co ...

  9. php实现多条件查找分页,Yii2.0框架实现带分页的多条件搜索功能示例

    本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能.分享给大家供大家参考,具体如下: 方法一 在控制器中 public function actionShow(){ $where['title' ...

最新文章

  1. 姚期智云栖大会首日演讲:为什么我说现在是金融科技的“新”黄金时代
  2. highcharts使用教程
  3. linux shell 脚本练习,shell脚本小练习
  4. 罗马数字转阿拉伯数字
  5. 什么样的 RPC 才是好用的 RPC
  6. 什么是节点光端机?总线型光端机有哪些优势?
  7. Python C扩展的引用计数问题探讨
  8. MyBatis 配置sql语句输出
  9. Vue调试工具 vue-devtools的安装
  10. spring java 定时任务_spring定时任务的几种实现方式
  11. VGG19-图像风格迁移
  12. 【Linux】一步一步学Linux——ssh-keygen命令(178)
  13. java导出CSV文件
  14. Cocos Creator 超简洁代码实现有限状态机 FSM,打造丝滑角色动作
  15. 【硬十宝典目录】——1、电源类(更新中~)
  16. 【项目实战二】基于模板匹配和形态学操作的信用卡卡号识别(OpenCV+Python)
  17. ElasticSearch 文档检索、查询建议、数据聚合
  18. 以图搜图 - Google 相似图片搜索原理 - Java实现
  19. 管理费用负数报不了怎么办_管理费用发生额是负数怎么办
  20. vue大文件分片上传插件

热门文章

  1. 霍夫变换论文、代码汇总
  2. Microsoft Excel 2010错误:此工作簿包含嵌入对象。Microsoft Excel 可能无法从这些对象中删除个人信息。
  3. videoJs实现手机视频播放功能
  4. Linux用户管理、组管理及权限管理
  5. 地狱模式的居转户记录06
  6. 专访阿里云闵万里:云上逐鹿_ET大脑要做行业化、垂直化的创新运用
  7. 用WPF做报表控件(四)
  8. 落单的数(落单的数 落单的数 II 落单的数 III)
  9. Windows下反(反)调试技术汇总
  10. linux下gperf工具(tcmalloc)检查C/C++代码内存泄露问题操作说明