【发布时间】:2015-04-12 03:13:47
【问题描述】:
我对在 Yii2 中创建 REST api 的简单程度印象深刻。但是,我在理解基本身份验证时遇到了一些麻烦。我的需求非常简单,我希望我的解决方案也能效仿。
我在这里需要基本令牌认证。我现在什至不反对对其进行硬编码,但这是我迄今为止所做的。
我有一个数据库表来保存我的单数令牌 ApiAccess(id, access_token)
ApiAccess.php - 模型 - 注意:IDE 在第一行显示语法错误
class ApiAccess extends base\ApiAccessBase implements IdentityInterface
{
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
}
Module.php - 在 init() 函数中
\Yii::$app->user->enableSession = false;
我制作了一个 ApiController,每个后续名词都可以扩展
ApiController.php
use yii\rest\ActiveController;
use yii\filters\auth\HttpBasicAuth;
use app\models\db\ApiAccess;
class ApiController extends ActiveController
{
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
];
return $behaviors;
}
}
就目前而言,在浏览器中访问 api 端点会提示输入用户名和密码。通过 REST 客户端请求显示访问错误。
如何正确地将 HttpBasicAuth 绑定到我的 ApiAccess 模型?
或
如何硬编码 api 访问令牌?(显然第一个选项是最好的)
【问题讨论】: