本文作者:心月

YII2博客发布文章登录验证设置

心月IT博客 2019-03-19
YII2博客发布文章登录验证设置摘要:无论是博客还是其他网站,出于安全考虑都会做一些行为限制和过滤。比如发布文章、留言等都需要登录账号才能使用,否则将无法使用这些功能。在YII2中控制行为过滤的方法是behaviors,通过这个方法可以控制哪些行为需要登录才能使用,哪些页面只能post访问,哪些页面只能get访问等。

    在前面分享的yii2搭建博客系统教程中把这登录验证才能发布文章给忘记了,这里补上。

    无论是博客还是其他网站,出于安全考虑都会做一些行为限制和过滤。比如发布文章、留言等都需要登录账号才能使用,否则将无法使用这些功能。在YII2中控制行为过滤的方法是behaviors,通过这个方法可以控制哪些行为需要登录才能使用,哪些页面只能post访问,哪些页面只能get访问等。

下面先把博客文章发布登录验证的代码放上来,把这个方法放到PostController中

/**
 * 行为权限控制
 * @return array
 */
public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'only' => ['index', 'create', 'upload', 'ueditor'],
            'rules' => [
                [
                    'actions' => ['index'],
                    'allow' => true,
                ],
                [
                    'actions' => ['create', 'upload', 'ueditor'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
               // '*' => ['get','post'],
               'index' => ['get'],
               'create' => ['get','post'],
               'upload' => ['post'],
               'ueditor' => ['get'],
            ],
        ],
    ];
}

文章发布登录验证

behaviors方法参数设置解析:

 'only' => ['index', 'create', 'upload', 'ueditor'],表示在PostController控制器中(PostController控制器中的behaviors行为控制只对该控制器的行为控制有效,其他控制器中如果也用控制过来行为需要在控制器内单独写behaviors方法),

'rules' => [
                [
                    'actions' => ['index'],
                    'allow' => true,
                ],
                [
                    'actions' => ['create', 'upload', 'ueditor'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],

rules是行为控制规则,'allow' => true 表示允许行为操作,如果改为false,无论没有登录还是登录了都无法执行该操作,例如:

//假如PostsController控制器中index的行为规则是这样写的,
//如果我们再次访问 frontend.yii2.com/posts/index
//没有登录的情况下会跳转到登录界面
//如果登录的情况下访问 会提示Forbidden (#403) 您没有执行此操作的权限,如下图界面所示
'rules' => [
                [
                    'actions' => ['index'],
                    'allow' => false,
                ],
            ],

页面访问权限控制示例

'roles' => ['@'] 表示只允许登录状态下操作,也就是要执行roles对应的action必须要登录。

'roles' => ['?'] 表示游客可操作,即登录不登录都可以执行的操作。

'actions' => [
               // '*' => ['get','post'],
               'index' => ['get'],
               'create' => ['get','post'],
               'upload' => ['post'],
               'ueditor' => ['get'],
            ],

action中的每一项表示当前行为运行的操作方式,

比如 'index' => ['get'] 只能以get的方式访问index

'create' => ['get','post'] 创建文章分两步操作,打开文章创建页面——填写数据提交保存,所以get和post操作都要允许,少一个都会报权限错误。

以上就是博客文章发布登录验证以及行为过滤方法解析的全部内容。

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-03-19
若转载请注明原文及出处:https://www.xinyueseo.com/yii/200.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论