Yii2到期访问令牌

时间:2017-08-29 17:15:38

标签: php yii2

使用yii2实现一个restful api,我想知道如何使用户的访问令牌失效

在我的登录控制器中

class DefaultController extends Controller {

    $behaviors['authenticator']           = [
        'class'       => CompositeAuth::className(),
        'authMethods' => [
            QueryParamAuth::className(),
        ],
    ];

  }

现在我的其他控制器正在实现这种行为

JSON

只要iu在我的网址

中发送带有访问令牌的请求,哪个有效

但现在问题是访问令牌不会过期

如何设置访问令牌的到期时间?

1 个答案:

答案 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()来设置有效的访问令牌。

请注意!代码未经过测试。