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

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

    开源项目
    最新评论
    34 :感谢你的开源项目
    奥德赛 on Electron+vue搭建项目或将vue项目转为electron :大声道奥术大师大声道
    cmf :你好 你的B5ThinkCMF下载后有点问题 能帮忙解决下么?
    laravel新手 :您好,laravel9+bootstrap3实现的快速开发后台,下载部署后,刷新加载,F12我看了下,我部署的是240毫秒左右,您部署的测试版本只有50毫秒左右,能辛苦指导下,如何优化lv吗,谢谢
    瀑布 :你好,yii我下载在本地后台,接口请求非常慢,通过debug我发现session_started执行时间很长,想问下这个是需要哪个地方配置吗?
    瀑布 :你好,今天看到你的开源项目,很喜欢,感谢你的开源
    冰舞 on Laravel定时任务的实现 :测试测试测试测试测试测试 测试测试测试测试测试测试测试测试测试测试
    文章分类