使用 Yii ip 访问规则时的重定向循环


Redirect loop when using Yii ip access rule

使用 Yii 1.1.15.我想通过 ip 规则限制登录和注销操作。我在控制器中有一个:

public function accessRules()
{
    return [
        [
            'allow',
            'actions' => ['index', 'error'],
            'users' => ['*'],
        ],
        [
            'allow',
            'actions' => ['login'],
            'users' => ['*'],
            'ips' => ['xx.yy.zz.qq'],
        ],
        [
            'allow',
            'actions' => ['logout'],
            'users' => ['@'],
            'ips' => ['xx.yy.zz.qq'],
        ],
        [
            'deny', // deny all users
            'users' => ['*'],
        ],
    ];
}

但是当我在浏览器中调用登录操作时,浏览器会进入重定向循环。如果我注释掉ips规则,它就会起作用。

上面的代码有什么问题?

这最终被证明是 2.0 和 1.1 分支中都存在的错误。它已经在 2.0 分支中修复(计划在 2.0.1 里程碑),我已经为 1.1 分支创建了一个拉取请求。

2.0 分支的问题 https://github.com/yiisoft/yii2/issues/4889