Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2:如何在API中使用不同的auth方法_Yii2_Yii2 Advanced App - Fatal编程技术网

Yii2:如何在API中使用不同的auth方法

Yii2:如何在API中使用不同的auth方法,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,我正在Yii2中开发API,在这里我需要为不同的操作使用不同的身份验证方法 如何为action1、action2和action3、以及HttpBasicAuth设置action4和action5 public function behaviors() { return [ 'basicAuth' => [ 'class' => \yii\filters\auth\HttpBasicAuth::className(),

我正在Yii2中开发API,在这里我需要为不同的操作使用不同的身份验证方法

如何为
action1
action2
action3
、以及
HttpBasicAuth
设置
action4
action5

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

您可以附加多个身份验证行为,并使用属性指定应受每个行为影响的操作列表:

public function behaviors() {
    return [
        'compositeAuth' => [
            'class' => \yii\filters\auth\CompositeAuth::className(),
            'authMethods' => [/* ... */],
            'only' => ['action1', 'action2', 'action3'],
        ],
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
            'auth' => function ($username, $password) {
                $user = User::find()->where(['username' => $username])->one();
                if ($user->verifyPassword($password)) {
                    return $user;
                }
                return null;
            },
            'only' => ['action4', 'action5'],
        ],
    ];
}

请首先尝试按照中的《Yi2身份验证指南》进行操作。如果您遇到了一些问题,请给出一些示例代码,您正在努力获得更好的帮助。是的,我遵循了它,我能够在不同的API控制器中使用这两种身份验证,但在我的例子中,我必须在同一个控制器中使用2个身份验证方法。这里我使用了基本身份验证方法,但对于同一个API控制器中的某些操作,我希望使用复合身份验证方法