首页 > 其他分享 >yii2过滤器

yii2过滤器

时间:2024-03-30 14:12:43浏览次数:12  
标签:function return yii actions filters 过滤器 yii2 class

yii2过滤器

过滤器是 控制器 动作 执行之前或之后执行的对象。

示例

过滤器 common\components\ActionTimeFilter

<?php

namespace app\common\components;

use Yii;
use yii\base\ActionFilter;

class ActionTimeFilter extends ActionFilter
{
    private $_startTime;

    public function beforeAction($action)
    {
        $this->_startTime = microtime(true);
        return parent::beforeAction($action);
    }

    public function afterAction($action, $result)
    {
        $time = microtime(true) - $this->_startTime;
        Yii::info("Action '{$action->uniqueId}' spent $time second.");
        return parent::afterAction($action, $result);
    }
}

控制器里使用过滤器 controllers\TestController

<?php

namespace app\controllers;

class TestController extends \yii\base\Controller
{
    public function behaviors(){
        return [
            [
                'class' => 'app\common\components\ActionTimeFilter'
            ]
        ];
    }

    public function actionIndex(){

        return $this->render('index');
    }
}

访问 (runtime/logs/app.log)

http://www.yii2.com/test/index

访问控制 ACF

AccessControl提供基于yii\filters\AccessControl::rules规则的访问控制

public function behaviors(){
        return [
            'access' => [
                'class' => AccessControl::class,
                'rules' => [
                    [
                        // 当前rule将会针对这里设置的actions起作用,如果actions不设置,默认就是当前控制器的所有操作
                        'actions' => ['index', 'view', 'create', 'update', 'delete', 'signup'],
                        // 设置actions的操作是允许访问还是拒绝访问
                        'allow' => true,
                        // @ 当前规则针对认证过的用户; ? 所有方可均可访问
                        'roles' => ['@'],
                    ],
                    [
                        'actions' => ['index'],
                        'allow' => true,
                        // 设置只允许操作的action
                        'verbs' => ['POST'],
                    ],
                    [
                        'actions'=>['index'],
                        'matchCallback'=>function($rule,$action){
                            return Yii::$app->user->id == 1 ? true : false;
                        },
                        'allow'=>true
                    ]
                ],
            ]
        ];
    }

yii\filters\VerbFilter

VerbFilter检查请求动作的HTTP请求方式是否允许执行,如果不允许,会抛出HTTP 405异常

use yii\filters\VerbFilter;

public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'index'  => ['get'],
                'view'   => ['get'],
                'create' => ['get', 'post'],
                'update' => ['get', 'put', 'post'],
                'delete' => ['post', 'delete'],
            ],
        ],
    ];
}

yii\filters\CORS

跨域资源共享 CORS 机制允许一个网页的许多资源(例如字体、JavaScript等) 这些资源可以通过其他域名访问获取

    public function behaviors()
    {
        return [
          'corsFilter' => [
              'class' => \yii\filters\Cors::class,
              'cors' => [
                  'Origin' => ['*'],
              ],

          ],
      ];
    }

HTTP 基本认证: \yii\filters\auth\HttpBasicAuth

public function behaviors()
{
    return [
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::class,
            'auth' => function ($username, $password) {
                $user = User::find()->where(['username' => $username])->one();
                if ($user->verifyPassword($password)) {
                    return $user;
                }
                return null;
            },
        ],
    ];
}

标签:function,return,yii,actions,filters,过滤器,yii2,class
From: https://www.cnblogs.com/hu308830232/p/18105403

相关文章

  • yii2 资源
    yii2资源AppAsset.php<?phpnamespaceapp\assets;useyii\web\AssetBundle;classAppAssetextendsAssetBundle{public$basePath='@webroot';public$baseUrl='@web';public$css=['css/site.css�......
  • yii2请求组件
    yii2请求组件应用的请求是用yii\web\Request对象来表示的请求参数$request=Yii::$app->request;$get=$request->get();//等价于:$get=$_GET;$id=$request->get('id');//等价于:$id=isset($_GET['id'])?$_GET['id']:null;$i......
  • yii2视图
    yii2视图示例代码<?phpuseyii\helpers\Html;useyii\widgets\ActiveForm;/*@var$thisyii\web\View*//*@var$formyii\widgets\ActiveForm*//*@var$modelapp\models\LoginForm*/$this->title='Login';?><h1><?=Ht......
  • yii2 模型
    yii2模型Yii2的模型(Model)是MVC(Model-View-Controller)设计模式中的一部分,它代表业务数据、规则和逻辑的对象。模型通常用于处理与数据相关的业务逻辑,如数据的验证、访问和修改等。模型示例代码<?phpnamespaceapp\models;useYii;useyii\db\ActiveRecord;......
  • yii2 配置bootstrap使用
    yii2配置bootstrap使用配置config/web.php添加people<?php...$config=[...'bootstrap'=>['log','people'],...'components'=>['people'=>['class'......
  • yii2 Gii使用和自定义模板
    yii2Gii使用和自定义模板配置开启giiconfig/web.php添加代码if(YII_ENV_DEV){$config['bootstrap'][]='gii';$config['modules']['gii']=['class'=>'yii\gii\Module',];}入口脚本web......
  • yii2控制器
    yii2控制器Yii2的控制器(Controller)是MVC(Model-View-Controller)设计模式中的核心组件之一,负责处理用户请求并生成相应的响应。控制器包含了处理请求所需的方法(通常称为动作方法或动作),并可以调用模型和视图来执行相应的业务逻辑和展示内容。在Yii2中,控制器类通常继承自yii\we......
  • yii2安装
    yii2安装安装composercurl-sShttps://getcomposer.org/installer|phpmvcomposer.phar/usr/local/bin/composer安装yii2-basiccomposercreate-project--prefer-dist--stability=devyiisoft/yii2-app-basicyii2-basicnginx配置server{listen......
  • 拦截器和过滤器的区别
            在平常使用中,对于某些功能的实现,可能既可以用拦截器完成,又可以用监听器完成。这样使我们对于这两个概念有一定程度上的混淆。 拦截器和过滤器的区别过滤器和拦截器的区别:①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与serv......
  • springboot的filter过滤器的用法
    springboot的filter过滤器的用法在项目下创建一个包,包名为filter在filter包下创建一个类型,命名随便然后配置过滤器给类加上过滤器的注释@WebFilter(filename="filtername",urlPatterns="/*")filtername用来设置过滤器的名称,urlPatters配置过滤器作用于那些文件实......