YII2-跳过自带的URL验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YII2-跳过自带的URL验证相关的知识,希望对你有一定的参考价值。

  在项目过程中,有时候需要用YII2的框架提供一些公共的接口,但是YII2的backend里面的controller都有路由验证,这个时候,只有跳过路由验证才能正常访问接口。

 

第一步:

vendor/mdmsoft/yii2-admin/components/Configs.php

/**
* @var boolean If true then AccessControl only check if route are registered.
*/
public $onlyRegisteredRoute = true;

 

第二步:

这样修改以后,MDM将只校验被添加到权限系统的URL,而没有添加的URL就不会进行校验了
在后台管理的权限管理中,将不需要验证的URL从注册表中删掉。

第三步:

在controller里面关闭SCRF验证

class UserController extends BaseController
{

    //关闭POST请求的CSRF验证
    public $enableCsrfValidation = false;

简单分析

$onlyRegisteredRoute这个参数配置是如何发挥作用的?

跟踪代码的执行发现,yii2-admin/components/Helper.php中的代码如下:

public static function checkRoute($route, $params = [], $user = null)
{
    $config = Configs::instance();
    $r = static::normalizeRoute($route);
    if ($config->onlyRegisteredRoute && !isset(static::getRegisteredRoutes()[$r])) {
        return true;
}

 


以上是关于YII2-跳过自带的URL验证的主要内容,如果未能解决你的问题,请参考以下文章

Yii2自带的验证码背景颜色怎么调?

yii2 判断一个url用户是不是有权限访问

在 Yii2 中跳过 CSV 文件的第一行

Node.js JavaScript 片段中的跳过代码

[YII2] 去除自带js,加载自己的JS,然后ajax(json)传值接值!

Yii2片段缓存详解