2017-11-28 19 views
0

私は残りのAPIを認証するためにbshaffer/oauth2-server-phpモジュールを使用しています。すべて正常に動作しますが、データベースには20,000を超えるアクセストークンがあります。
私が読んだように、フレームワークは期限切れのトークンを自動的に削除したり、設定パラメータによって削除しません。だから私は自分で仕事をしようとしている。
私はトークンを保持するテーブルを知っており、私はすでにdeleteステートメントを構築しています。しかし、私はクリーンアップのルーチンにフックするための適切な場所(適切なクラス/方法)を見つけることができません。oauth2-server-phpで期限切れのトークンを削除する

答えて

0

によって破壊されたときに実行されるように__destruct()関数を使用します

$doctrine = $this->getContainer()->get('doctrine'); 
    $entityManager = $doctrine->getEntityManager(); 

    $qb = $entityManager->createQueryBuilder(); 
    $qb->select('t') 
     ->from('OAuth2ServerBundle:AccessToken', 't') 
     ->where('t.expires < :now') 
     ->setParameter('now', new \DateTime(), Type::DATETIME); 
    $accessTokens = $qb->getQuery()->getResult(); 

    $cleanedTokens = 0; 
    foreach ($accessTokens as $token) { 
     $entityManager->remove($token); 
     $cleanedTokens++; 
    } 

は、これは単なる一例として、access_tokenはテーブルをカバーして:あなたはテーブル名を知っていて、ちょうどそれを時間ごとに実行するので、symfonyはなく、プレーンなPHPコマンドすることができます。私はまだこのライブラリでトークンの有効期限を変更する方法を得ることができませんでしたところで;)

UPDATE:ちょうどparameters.ymlを編集して、アイデアが本当に良いですが、私の中で

oauth2.server.config: 
     auth_code_lifetime: 30 
     access_lifetime: 120 
     refresh_token_lifetime: 432000 
0

私は、bshaffer oauthサーバーの完全なソースを読んでいませんでした。
しかし、クラスServerから拡張して独自のクラスを作成することができます。
そして、私はここで良いオプションは、中小規模一部、ここで、コマンドを作成することだと思うオブジェクトcustomServerがPHP

<?php 
include('src/OAuth2/Server.php'); # make sure the path is correct. 

class customServer extends Server { 

    public __construct(($storage = array(), array $config = array(), array $grantTypes = array(), array $responseTypes = array(), TokenTypeInterface $tokenType = null, ScopeInterface $scopeUtil = null, ClientAssertionTypeInterface $clientAssertionType = null)) { 
    parent::_construct($storage, $config, $grantTypes, $responseTypes, $tokenType, $scopeUtil, $clientAssertionType); 
    } 
} 

public function __destruct() { 
    // run your cleanup SQL from here. 
} 

?>

+0

を追加寿命を変更するには私は認証プロセスのためにzend-mvc-authを使っているので、いつでもServerクラスを拡張することができるかどうかわかりません。 – altralaser

関連する問題