使用yii2实现一个restful api,我想知道如何使用户的访问令牌失效
在我的登录控制器中
class DefaultController extends Controller {
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'authMethods' => [
QueryParamAuth::className(),
],
];
}
现在我的其他控制器正在实现这种行为
JSON
只要iu在我的网址
中发送带有访问令牌的请求,哪个有效但现在问题是访问令牌不会过期
如何设置访问令牌的到期时间?
答案 0 :(得分:3)
在您的用户模型中添加属性' access_token'并改变/添加这样的东西......
public static function findIdentityByAccessToken($token, $type = NULL)
{
// find user with token
if ($user = static::findOne(['access_token' => $token])) {
return $user->isAccessTokenValid() ? $user : null;
}
return null;
}
public function generateAccessToken($expireInSeconds)
{
$this->access_token = Yii::$app->security->generateRandomString() . '_' . (time() + $expireInSeconds);
}
public function isAccessTokenValid()
{
if (!empty($this->access_token)) {
$timestamp = (int) substr($this->access_token, strrpos($this->access_token, '_') + 1);
return $timestamp > time();
}
return false;
}
显然,您需要调用generateAccessToken()来设置有效的访问令牌。
请注意!代码未经过测试。