如何在 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
文件夹中。
您必须至少实现 AuthInterface
的 authenticate
方法(challenge
和 handleFailure
已经有默认实现,但您显然也可以覆盖它们)。
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;
}
另请参阅如何实现内置身份验证方法(HttpBasicAuth
、HttpBearerAuth
、QueryParamAuth
)。
我正在尝试遵循 Yii2 的身份验证教程*,但由于项目的要求,我需要构建自定义身份验证。尽管本教程确实说明您可以制作自己的作品,但并未详细说明如何制作。我需要创建哪些文件以及我需要在何处和哪些值添加到 $behaviors[[=15=]] 以引用我的自定义身份验证模块?
*https://github.com/yiisoft/yii2/blob/master/docs/guide/rest-authentication.md
目前的问题太宽泛了,不过我会尽量提供基本的算法。
创建 class 从 yii\filters\auth\AuthMethod
延伸。
放在哪里由您决定(因为使用了名称空间),您可以遵循自己的约定。假设我们将它放在 common\components
文件夹中。
您必须至少实现 AuthInterface
的 authenticate
方法(challenge
和 handleFailure
已经有默认实现,但您显然也可以覆盖它们)。
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;
}
另请参阅如何实现内置身份验证方法(HttpBasicAuth
、HttpBearerAuth
、QueryParamAuth
)。