我正在尝试遵循Yii2的身份验证教程*,但由于项目的要求,我需要构建自定义身份验证。尽管本教程确实说明了你可以自己做,但它并没有详细说明如何做。我需要创建哪些文件以及我需要在$ behavior [' authenticator']中添加哪些值和哪些值来引用我的自定义身份验证模块?
* https://github.com/yiisoft/yii2/blob/master/docs/guide/rest-authentication.md
答案 0 :(得分:5)
问题在当前状态下过于宽泛,但我会尝试提供基本算法。
创建从yii\filters\auth\AuthMethod
扩展的类。
在哪里放置它(由于使用命名空间),您可以遵循自己的约定。我们假设我们将其放在common\components
文件夹中。
您必须至少实现authenticate
的{{1}}方法(AuthInterface
和challenge
已经有默认实现,但您显然也可以覆盖它们。)
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;
}
,HttpBasicAuth
,HttpBearerAuth
)。