当前位置:编程学习 > > 正文

yii数据库测评(Yii2.0框架behaviors方法使用实例分析)

时间:2021-10-15 00:47:55类别:编程学习

yii数据库测评

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

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

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

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

(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(),
  •       'only' => ['index', 'create', 'update'],
  •       'rules' => [
  •         // 允许认证用户
  •         [
  •           'allow' => true,
  •           'roles' => ['@'],
  •         ],
  •         // 默认禁止其他用户
  •       ],   
  •     ],
  •     'verbs' => [
  •       '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,否则报错
  •         ],
  •       ],
  •     ];
  • }
  • 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

    原文链接:https://www.cnblogs.com/lccjob/p/5057369.html

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐