Yii2.0框架behaviors方法使用实例分析


Posted in PHP onSeptember 30, 2019

本文实例讲述了Yii2.0框架behaviors方法使用。分享给大家供大家参考,具体如下:

初学Yii2.0 学习路径:http://www.yii-china.com/

经过各种学习,积累知识点;

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

use yii\filters\AccessControl;
use yii\filters\VerbFilter;

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

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

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

  1. guest(游客,没有登录的,用 ? 表示)
  2. 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程序设计有所帮助。

PHP 相关文章推荐
php抓取https的内容的代码
Apr 06 PHP
php学习之流程控制实现代码
Jun 09 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
PHP小教程之实现双向链表
Jun 12 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
php查看一个变量的占用内存的实例代码
Mar 29 PHP
php解决约瑟夫环算法实例分析
Sep 30 #PHP
php使用curl伪造浏览器访问操作示例
Sep 30 #PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 #PHP
Laravel框架控制器的request与response用法示例
Sep 30 #PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 #PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 #PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 #PHP
You might like
神族 Protoss 剧情介绍
2020/03/14 星际争霸
收音机的保养
2021/03/01 无线电
php动态生成函数示例
2014/03/21 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python 容器总结整理
2017/04/04 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python整数对象实现原理详解
2019/07/01 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
linux面试题参考答案(7)
2014/07/24 面试题
日语求职信范文
2013/12/17 职场文书
期中考试反思800字
2014/05/01 职场文书
产品委托授权书范本
2014/09/16 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
个人债务授权委托书
2014/10/17 职场文书
学生上课说话检讨书
2014/10/25 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python