1

backbone.js と Web API を使用してアプリケーションを構築しています。JS クライアントは ajax リクエストを送信して API にアクセスします。API の構築は非常に簡単ですが、API の認証と承認を実装したいと考えています。

認証が成功した後にトークンを返し、このトークンを以降のリクエストに使用する予定です。このトークンは、HTTP Authorization ヘッダーで渡されます。私の要件は次のとおりです。1)各リクエストでトークンを確認し、ユーザーIDを取得します。2) 取得したユーザー ID を以降のアクションに使用します。

最初のビットは、カスタム アクション フィルターを使用して処理できます。ここでは、永久トークンをデータベースに対して検証できます。しかし、2番目のビットを実行するためのサンプルや例を見つけることができません. 渡されたトークンからユーザー ID を取得し、後で処理するためにそれをさらに実行したいと考えています。それを行う方法はありますか?

提案やアイデアを待っています。どのコード サンプルも本当に役に立ちます。前もって感謝します。

4

2 に答える 2

1

Thread.CurrentPrincipal次のように、トークンの検証が成功したときに設定できます。

IPrincipal principal = new GenericPrincipal(new GenericIdentity(username), null);

Thread.CurrentPrincipal = principal;
// if we're running in IIS...
if ( HttpContext.Current != null )
    HttpContext.Current.User = principal;

System.Security.Principal.IPrincipalプリンシパルは、 (ユーザー ID を関連付けるために) インターフェイスを実装するカスタム クラスのインスタンスである場合もあります。

DelegatingHandlerさらに、メッセージ ライフサイクルのできるだけ早い段階で現在のプリンシパルを設定するために、トークン検証にアクション フィルターの代わりにを使用することをお勧めします。さらに、この方法では、すべてのアクション メソッド/コントローラーをアクション フィルター属性で装飾する必要はありません。

于 2013-10-28T06:44:13.733 に答える