トークンのAPIの本人確認

前と後の分離の終了または複数のWebアプリケーションをサポートするために、クッキーの使用上の元のセッションまたは大きな問題があるだろう
、我々はトークンを使用して

使用

1.バックエンドに確認コード[など]フロント着陸アカウントのパスワード情報を渡します

2.バックエンド認証ログイン情報、ユーザーにバインドされ、フロントに返却されたトークンのユニークなIDを生成します

3.後端に送信トークンヘッダ内のバッファ、各要求に格納されたトークン、またはURLの前端

4.比較のためにトークンから送信されたトークンの後端部の前端、有効期限を確認し、その結果、後端部に戻されます

 

データベース設計:

 

 

 

 

PHPコード:

    // テストランディングか
    パブリック 関数cehckLogin(){
         IF$この - >ヘッダ[ 'トークン' ])){ 
            AException( 'トークンの検証が失敗した'、401 ); 
        } 
        $ユーザー =モデル( 'ユーザ') - > WHERE([=> 'トークン' $この - >ヘッダ[ 'トークン']]) - > ()を探す; 

        IF(!$ユーザー){ 
            AException( 'トークンの検証が失敗した'、401 ); 
        } 
        IFユーザー$ - > TOKEN_TIMEOUT < 時間()){ 
            AException( 'トークンの有効期限が切れました'401 )。
        } 
        // トークン续期
        $ code_out = 時間()+ 60 * 60 * 24 *コンフィグ( 'IAuth.token_time' ); 
        モデル( 'ユーザ') - >ここで、([ 'トークン' => $この - >ヘッダ[ 'トークン']]) - >更新([ 'TOKEN_TIMEOUT' => $ code_out ])。
        返す $ユーザーを - > のid。
    } 


    // 设置唯一的トークン
    のパブリック 静的の 機能 setAppLoginToken($ユーザID = '')));
        $ strの = SHA1$ strの$ユーザーID );
        返す $ strのを
    }

 

    // 更新トークン
    パブリック 関数 updateToken($ ID、およびトークン$、&$ TOKEN_TIMEOUT ){
         $トークン = 0 $ TOKEN_TIMEOUT = 0 ; 

        $コード = IAuth :: setAppLoginToken($ ID )。
        $ code_out = 時間()+ 60 * 60 * 24 *コンフィグ( 'IAuth.token_time' );
        $ RES = $この - >ここで、([ 'ID' => $ ID ]) - > 更新(
            [ 'トークン' => $コード、 'TOKEN_TIMEOUT' => $ code_out ]
        ); 
        もし$ RES ){
             $トークン = $コード$ TOKEN_TIMEOUT = $ code_out 
        } 
    }

 

おすすめ

転載: www.cnblogs.com/cl94/p/12507961.html