2

DotNetOpenAuthを使用するWCFSOAPWebサービスを終了した後、consumertokenがOAuthConsumerテーブルに格納されると、トークンの有効期限が切れたと見なされた後でも、削除されることはありません。

DotNetOpenAuthプロジェクトの標準のAuthorizedConsumers.aspxページを編集して、ユーザーがアプリケーションへのアクセスを手動で取り消すことができるようにしました。基本的に、データベースからコンシューマートークンを削除しますが、古いトークンを自動的に削除することはできないのではないかと考えていました。たとえば、ユーザーがトークンがアクセスを許可するアプリケーションにアクセスしようとしたときに、トークンがまだ存在しないかどうかを確認するための何らかのチェックを行うべきではありません。トークンが存在する場合は、有効期限が切れているかどうかを確認し、削除します。新しいトークンを作成する前に、期限切れの場合は古いトークン

すでにチェックが行われているかどうかは実際にはわかりません(私はそれらを探しましたが、見つけることができません)、ありますか?そして、データベースから期限切れのトークンを削除するコードを追加するにはどうすればよいですか?そのコードを正確にどこに挿入しますか?DataBaseTokenManagerクラスのStoreNewRequestTokenメソッドで?

ありがとうございました!

4

1 に答える 1

0

データベース テーブルのクリーニングは、DotNetOpenAuth の範囲を超えています。好きなように実装できます。たとえば、有効期限が切れたトークン行を削除し、何らかの方法でタイマーで呼び出すデータベース ストアド プロシージャがあるとします。DotNetOpenAuth は、トークン マネージャー インターフェイスの実装から有効な (期限切れでない) トークンのみを返すことを想定しています。これらのトークンの有効期限は、DNOA が最初に保存するように要求したときに与えられます。

トークン テーブルが大きくなりすぎるのを避けるには、いくつかの方法があります。有効期間が短いトークンを使用して、定期的にテーブルをクリーンアップしてください。しかし、最良のアプローチは DotNetOpenAuth の OAuth 2 実装で使用されるため、OAuth 2 に切り替えることができればそれが理想的です。そこに着くと、トークンテーブルがまったくないことがわかります。最も近いのは Authorizations テーブルです。このテーブルには、個々のユーザーの承認ジェスチャーごとに 1 行しかありません。これらの承認が期限切れになった場合は、それらを削除できます。その承認により、クライアントは必要な数の一意のトークンを取得でき、トークンは自己記述型で署名済みであるため、データベースが大きくなることはありません。DNOA がすべてを管理します。

于 2013-03-05T04:28:26.393 に答える