B5net

人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

Yii2 自定义过滤器的使用方式

Published on:2022-04-25
过滤器是 控制器动作 执行之前或之后执行的对象。我们可以将其当作中间件来使用。
下面介绍自定义过滤器的使用方法。


1.创建过滤器FilterToken,让其继承yii\base\ActionFilter

class FilterLogin extends ActionFilter
{
    use TraitToken;
    /**
     * 平台类型
     * @var string
     */
    public string $type = '';
    /**
     * 方法前执行操作
     * @param yii\base\Action $action
     * @return bool
     */
    public function beforeAction($action): bool
    {
        if (!parent::beforeAction($action)) {
            return false;
        }
        $token = Yii::$app->request->post('token', '');
        
        //对token进行处理或查询
        $token_record = xxxxx;
        //当token不存在或失效 则返回json
        if (!$token_record) {
            Yii::$app->response->data = ['code'=>305,'msg'=>'登录失效'];
            Yii::$app->response->format = Response::FORMAT_JSON;
            return false;
        }
        //将token信息传递
        $bodyParams = Yii::$app->request->bodyParams;
        $bodyParams['__token'] = $token_record;
        Yii::$app->request->setBodyParams($bodyParams);
        return true;
    }
}

2.控制器中使用
 public function behaviors()
    {
        return [
            'FilterLogin'=>[
                'class' => \api\components\FilterLogin::class,
                'type'=>'app'  //可传递参数
            ]
        ];
    }
public function actionIndex(){

        //获取传递来的token记录信息
        $token = \Yii::$app->request->getBodyParam('__token');
        
   }

留言列表(0)

    留言

    B5net

    人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

    开源项目
    最新评论
    wpstqe :作者大大有没有建一个QQ群的计划?
    流浪的PHPer :感谢开源项目,快速开发非常的好用!
    小白 :大佬您好 请问一下 http://b5laravelcmf.b5net.com/admin这个演示网址的全部代码有吗,gitee上不全呢,还能提供一下吗,感激不尽阿
    tz :大佬 B5YiiCMF 还开放吗
    weifox on GoLang常用的三方库 :还有 https://github.com/golang-module/carbon
    php :关于导出功能:1、B5thinkCMF部署后 参数的导出功能点击后就白屏了,不知道是哪里有问题?2、人员部门的导出功能没看懂怎么配置的? 只是启用exportshow=true吗 方便的话请答复下,谢谢!
    初学者 :您好! 部署了您的B5ThinkCMF,请教下 使用新增功能如何实现二级联动呢 ?谢谢
    11 :22
    pcy :前排围观
    Louis :冰舞的博客使用yii框架做的吧,B5ThinkCMF在本地部署后,登录系统的响应时间要比B5YiiCMF的登录时间长,还有一些Bug待修复
    文章分类