如何在 Yii2 中实现自己的身份验证?

How do I implement my own authentication in Yii2?

我正在尝试遵循 Yii2 的身份验证教程*,但由于项目的要求,我需要构建自定义身份验证。尽管本教程确实说明您可以制作自己的作品,但并未详细说明如何制作。我需要创建哪些文件以及我需要在何处和哪些值添加到 $behaviors[[=​​15=]] 以引用我的自定义身份验证模块?

*https://github.com/yiisoft/yii2/blob/master/docs/guide/rest-authentication.md

目前的问题太宽泛了,不过我会尽量提供基本的算法。

创建 class 从 yii\filters\auth\AuthMethod 延伸。

放在哪里由您决定(因为使用了名称空间),您可以遵循自己的约定。假设我们将它放在 common\components 文件夹中。

您必须至少实现 AuthInterfaceauthenticate 方法(challengehandleFailure 已经有默认实现,但您显然也可以覆盖它们)。

namespace common\components;

use yii\filters\auth\AuthMethod;

class CustomAuth extends AuthMethod
{
    /**
     * @inheritdoc
     */
    public function authenticate($user, $request, $response)
    {
        // Put your logic here
    }
}

在 REST 控制器中的用法:

use common\components\CustomAuth;

...

 /**
  * @inheritdoc
  */
public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['authenticator'] = [
        'class' => CustomAuth::className(),            
    ];

    return $behaviors;
}

另请参阅如何实现内置身份验证方法(HttpBasicAuthHttpBearerAuthQueryParamAuth)。