2017-08-29 20 views
0

yii2と安らかなAPIを実装していると私は私の他のコントローラに今私のログインコントローラでは、ユーザーのアクセストークンYii2期限切れのアクセストークン

を期限切れにする方法を知って

if($model->login()){ 
     return [ 
     "access_token' => Yii::$app->user->identity->getAuthKey(), 
     ]; 
    } 

をしたいと思いますが、これを実装していますIUは私のURLでアクセストークンと私の要求を送信するたびに動作行動

class DefaultController extends Controller { 

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

    } 

しかし、問題はアクセストークンが期限切れになるということです。

アクセストークンの有効期限を設定するにはどうすればよいですか?あなたのUserモデルで

+0

あなたはどのユーザー拡張機能を使用していますか? – scaisEdge

+0

拡張子を使用していません –

+0

Pls this [answer](https://stackoverflow.com/a/42764555/7818938)をチェックすると便利です。 – vityapro

答えて

0

このような何かを追加/属性「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()を呼び出す必要があります。

注!コードはテストされていません。

関連する問題