HTTPヘッダー内で送信されるいくつかのOAuthクレデンシャルを検証するカスタムAuthorizeAttributeを作成しました。私はこれらの資格情報のいくつかを使用して、誰がリクエストを行っているかを識別しています。AuthorizeAttributeでこの情報を解析したら、データをコントローラーのインスタンス変数に割り当てることができるように、この情報を渡す方法はありますか?次に、コントローラーのどこにでも、要求側のIDがあります。
6115 次
1 に答える
16
元の答え
フィルターでこれを行うことができるはずです
filterContext.HttpContext.Items["test"] = "foo";
そして、これはあなたの行動で
_yourVariable = HttpContext.Items["test"];
おそらく よりも一意のキーを使用したいでしょうが"test"
、それがアイデアです。
編集コンストラクターではなくアクションでこれを行う理由は 2 つあります。
- Controller のコンストラクターは OnAuthorization の前に起動するため、項目はまだ設定されていません。
- HttpContext は、コントローラーのコンストラクターでまだ設定されていません。
代替ソリューション
- 新しいを作成します
OAuthController : Controller
- オーバーライド
OnAuthorization
- ロジックをフィルターから次の場所に移動します
OAuthController.OnAuthorization
protected
にフィールド (つまり、protected object myAuthData
) を設定します。OAuthController
- 他のコントローラに継承さ
OAuthController
せる代わりにController
- 他のコントローラーは にアクセスできます
myAuthData
。
于 2011-07-12T18:35:05.993 に答える