gpt4 book ai didi

api - Yii2 Rest API 承载身份验证

转载 作者:行者123 更新时间:2023-12-02 15:31:26 25 4
gpt4 key购买 nike

我制作了一个 Yii2 REST API。通过 API,您可以获得汽车列表。现在我想使用承载身份验证来保护 API。但我不知道它是如何工作的。

首先。我在 Controller 的行为方法中设置了身份验证器。

public function behaviors(){
return [
'contentNegotiator' => [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
'authenticator' => [
'class' => CompositeAuth::className(),
'authMethods' => [
HttpBearerAuth::className(),
],
]
];
}

这工作得很好。如果我访问该 URL,我将收到“未经授权”消息。

在我的 WordPress 插件中,我创建了一个函数来使用 API 并使用身份验证 key 设置 header 。

function getJSON($template_url) {
$authorization = "Authorization: Bearer " . get_option("auth_key");

// Create curl resource
$ch = curl_init();
// Set URL
curl_setopt($ch, CURLOPT_URL, $template_url);
// Return transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Set headers
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization));
// $output contains output as a string
$output = curl_exec($ch);
// Close curl resource
curl_close($ch);

return json_decode($output, true);
}

但现在我的问题是。我如何在 API 中检查此 key 是否有效并给我响应。我想在数据库中搜索 key ,如果存在,它还应该给我同一行中的 ID 或电子邮件。

我不知道该怎么做。

最佳答案

\yii\filters\auth\HttpBearerAuth::authenticate()只需调用 \yii\web\User::loginByAccessToken() :

$class = $this->identityClass;
$identity = $class::findIdentityByAccessToken($token, $type);

所以你只需要实现 findIdentityByAccessToken()在您的用户身份类别中,例如:

public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['auth_key' => $token]);
}

关于api - Yii2 Rest API 承载身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com