我目前正在研究基于 yii2 的 Rest api。我使用不记名令牌进行用户身份验证。让我解释一下要求。
1)第一个用户使用他们的凭据从外部 php 应用程序进行身份验证。
2)他/她获得了一个访问令牌。
3) 使用此访问令牌发出每个后续请求。
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['auth_key' => $token]);
}
Run Code Online (Sandbox Code Playgroud)
这是我开始思考的地方。我没有找到访问令牌的任何过期时间。真的需要吗?如果是,我该如何存档?提前致谢。
你的问题有点宽泛,但我会尽力帮助你的思考过程。
我没有找到访问令牌的任何过期时间。真的需要吗?
这取决于您的要求。您是否希望您的用户在第一次进行身份验证后能够无限期地访问您的 API?您希望您的用户经常更新他们的令牌吗?
我会推荐后者,因为它限制了潜在攻击者可以使用受损访问令牌的时间。
如果是,我该如何存档?
一种选择是将包含到期日期的日期时间的字段添加到与您的身份类对应的数据库表中,并检查这在实现中是否仍然有效 findIdentityByAccessToken()
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne([
'AND',
['auth_key' => $token],
['>=', 'token_expire', new \yii\db\Expression('NOW()')]
]);
}
Run Code Online (Sandbox Code Playgroud)