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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
PHP 正则表达式小结
Feb 12 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 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
php上传excel表格并获取数据
2017/04/27 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
js回调函数仿360开机
2019/12/26 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python实现ping的方法
2015/07/06 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
python快排算法详解
2019/03/04 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
python类共享变量操作
2020/09/03 Python
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
中学生学习生活的自我评价
2013/10/26 职场文书
会计专业推荐信
2013/10/29 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
超市总经理岗位职责
2014/02/02 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
司法局火灾防控方案
2014/06/05 职场文书
中班教师个人总结
2015/02/05 职场文书
个性与发展自我评价
2015/03/06 职场文书
红色电影观后感
2015/06/18 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫