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

时间:2015-03-17 05:20:32

标签: php yii yii2

我正在尝试遵循Yii2的身份验证教程*,但由于项目的要求,我需要构建自定义身份验证。尽管本教程确实说明了你可以自己做,但它并没有详细说明如何做。我需要创建哪些文件以及我需要在$ behavior [' authenticator']中添加哪些值和哪些值来引用我的自定义身份验证模块?

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

1 个答案:

答案 0 :(得分:5)

问题在当前状态下过于宽泛,但我会尝试提供基本算法。

创建从yii\filters\auth\AuthMethod扩展的类。

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

您必须至少实现authenticate的{​​{1}}方法(AuthInterfacechallenge已经有默认实现,但您显然也可以覆盖它们。)

handleFailure

REST控制器中的用法:

namespace common\components;

use yii\filters\auth\AuthMethod;

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

另请参阅如何实施内置身份验证方法(use common\components\CustomAuth; ... /** * @inheritdoc */ public function behaviors() { $behaviors = parent::behaviors(); $behaviors['authenticator'] = [ 'class' => CustomAuth::className(), ]; return $behaviors; } HttpBasicAuthHttpBearerAuth)。