有効期限がrefresh_tokenかどうかを確認した後、Laravelパスポートトークンの有効期限が切れます

需要:分離前と後の状態の下端、ログイン失敗(トークン期限切れ)、フロントエンドは、次のステップは、ログインページにジャンプしたり、refresh_tokenリフレッシュトークンを使用することです知っている必要があります。

これは、(有効期限が切れていないrefresh_token)バックエンドのトークンを必要とすると、次の工程のためにフロントにリフレッシュすることができるかどうかに応じて、異なる識別するために戻ります。

具体的には、以下:

図1は、各成功した着陸クエリ後の新たなRefreshTokenミドルウェアは、トークンID(IDにより対応するトークンを取得することができないログイン失敗)との間の対応関係を保存します

<?PHPの
名前空間のApp \のHttp \ミドルウェア。
使用閉鎖を。
使用認証を。
使用を照らし\サポート\ファサード\ DBを。
クラスRefreshToken 
{ 

    / * * 
     * @paramの$リクエスト
     * @paramクロージャ$次
     * @return混合
     * / 
    パブリック 関数ハンドル($要求、閉鎖$次
    { 
        $トークン = $要求 - > ヘッダ( '許可' )。
        $持っている = DB ::テーブル( 'oauth_refresh_tokens_ids') - >( 'access_tokenは'、$トークン) - >値( 'access_token_id' )。
        もし(!$有する){ 
            DB ::テーブル( 'oauth_refresh_tokens_ids') - >([=> 'access_tokenは'挿入$トークン - >トークン() - > 'access_token_id' =>認証::ユーザー()ID]) ; 
        } 
        を返す $次$要求)。
    } 
}
コードの表示

図2は、ファイルアロケーションkerne.phpは、重要な中間体であるRefreshToken

保護 $ routeMiddleware = [
         'AUTH' =>アプリケーション\ \のHttpミドルウェア\認証\ :: クラス
        'リフレッシュ' =>ミドルウェア\ RefreshToken \アプリケーション\のHttp \ :: クラス// 刷新トークン 
    ]。
コードの表示

ミドルウェアRefreshTokenによる経路3、

4、ジャンプ方法は、認証ミドルウェアログイン失敗redirectToを書き換えた後、

保護された 関数 redirectTo($要求
    { 

        $トークン = $ _SERVER [ 'HTTP_AUTHORIZATION' ]。
        $ accessTokenId = DB ::テーブル( 'oauth_refresh_tokens_ids') - >( 'access_tokenは'、$トークン) - >値( 'access_token_id' )。
        $ RefreshTokensExpiresAt = DB ::テーブル( 'oauth_refresh_tokens') - >( 'access_token_id'、$ accessTokenId) - >値( 'expires_at' )。
        もしのstrtotime$ RefreshTokensExpiresAt)>
            ルート( 'ログイン'、[ 'コード' => 402 ])。
        } {
             戻り経路( 'ログイン'、[ 'コード' => 401 ])。
        } 
    }
コードの表示

5、新しいルート

ルート::( 'ログイン/ {コード}'、取得関数$コード){
     戻り応答() - > JSON([ 'コード' => $コード、 'MSG' => 'ログイン・タイムアウトを' ]); 
} ) - >名前( 'ログイン');
コードの表示

実装:

1、ログインタイムアウトがrefresh_tokenを満了していない返します

{
     "コード": "402"、
    "MSG": "ログインタイムアウト" 
}

ログインタイムアウトがrefresh_tokenの有効期限が切れた後、2は、返さ

 

{
     "コード": "401"、
    "MSG": "ログインタイムアウト" 
}

注:表中のデータが、トークンrefresh_token作成時間と有効期限を保存しますが、時間枠は、テーブルからデータ値を検証しますが、直接アウトトークンによって計算され、そのセキュリティは本当に高いと言って持っていませんでした。そのため、更新が可能なログインのための方法トークンの有効期限を変更することによって、私たちは、トークン更新する必要があります。

楽しめ !

  

おすすめ

転載: www.cnblogs.com/daizhongxing/p/11424343.html