Php Yii2:我可以在验证器之前设置访问行为吗?

Php Yii2:我可以在验证器之前设置访问行为吗?,php,yii2,behavior,Php,Yii2,Behavior,我在authenticator中有两个authMethods,在access behavior中有一个ip规则 我想在验证程序之前验证访问ip规则行为 但验证者的验证总是在访问之前进行 如何更改验证顺序? 如果你不能处理这个问题 你能投票让更多的开发者看到这个问题吗 谢谢 我找到了一种新方法 bootstrap.php protected $allowActions = ['login']; /** * @inheritdoc */ public function behaviors()

我在authenticator中有两个authMethods,在access behavior中有一个ip规则

我想在验证程序之前验证访问ip规则行为

但验证者的验证总是在访问之前进行

如何更改验证顺序?

如果你不能处理这个问题

你能投票让更多的开发者看到这个问题吗


谢谢

我找到了一种新方法

bootstrap.php

protected $allowActions = ['login'];

/**
 * @inheritdoc
 */
public function behaviors()
{
    $behaviors = parent::behaviors();

    $behaviors['access'] = [
        'class' => AccessControl::className(),
        'rules' => [
            [
                'roles' => ['@'],
                'ips'   => ['192.168.1.222'],
                'allow' => true
            ]
        ],
    ];
    $behaviors['authenticator'] = [
        'class' => CompositeAuth::className(),
        'optional' => ['*'],
        'authMethods' => [
            [
                'class' => AutoLoginAuth::className()
            ],
            [
                'class' => JwtAuth::className(),
                'key'   => '89794c5c8f80bdd4916b4b8b7f9a044a'
            ]
        ],
    ];
    return $behaviors;
}
重构\rest\Controller.php

Yii::$container->set('yii\rest\Controller', 'refactoring\rest\Controller');
代码如上所述

注入一个新的覆盖类,只需在验证器之前设置访问权限

总结如下:

首先。

在这个应用程序中,我每次在authenticator之前都会得到访问验证。这个解决方案适合我的需要

秒。

如果要使用此方法,请确认是否使用此方法

第三名。


AccessControl进行了身份验证。这是在访问前设置验证器。因此,这种方法并不适合所有人。我将在我的反射类中进行更多的验证器验证。

我找到了一种新的方法来进行验证

bootstrap.php

protected $allowActions = ['login'];

/**
 * @inheritdoc
 */
public function behaviors()
{
    $behaviors = parent::behaviors();

    $behaviors['access'] = [
        'class' => AccessControl::className(),
        'rules' => [
            [
                'roles' => ['@'],
                'ips'   => ['192.168.1.222'],
                'allow' => true
            ]
        ],
    ];
    $behaviors['authenticator'] = [
        'class' => CompositeAuth::className(),
        'optional' => ['*'],
        'authMethods' => [
            [
                'class' => AutoLoginAuth::className()
            ],
            [
                'class' => JwtAuth::className(),
                'key'   => '89794c5c8f80bdd4916b4b8b7f9a044a'
            ]
        ],
    ];
    return $behaviors;
}
重构\rest\Controller.php

Yii::$container->set('yii\rest\Controller', 'refactoring\rest\Controller');
代码如上所述

注入一个新的覆盖类,只需在验证器之前设置访问权限

总结如下:

首先。

在这个应用程序中,我每次在authenticator之前都会得到访问验证。这个解决方案适合我的需要

秒。

如果要使用此方法,请确认是否使用此方法

第三名。


AccessControl进行了身份验证。这是在访问前设置验证器。因此,这种方法并不适合所有人。我将在我的反射类中进行更多的验证器验证。

我认为这是无法实现的,虽然验证器用于身份验证,但访问行为用于授权。好的,非常感谢。@Isitar为什么不将其定义为复合身份验证中的另一个验证器类?@mmta41。复合身份验证类必须实现AuthInterface.com,但我想使用AccessControl。访问控制不需要实现它。它们是两种完全不同的验证方法。我认为这是不可能实现的,因为authenticator用于验证,而访问行为用于授权。好的,非常感谢。@Isitar为什么不将其定义为复合验证中的另一个authenticator类?@mmta41。复合身份验证类必须实现AuthInterface.com,但我想使用AccessControl。访问控制不需要实现它。它们是两种完全不同的验证方法。