MVCで記述されたカスタムAuthorizeAttributeがあります。私はそれをセキュリティのためにコントローラに適用しました。私が書いたAuthorizeAttributeクラスには、Webサービスコールから収集したいくつかの変数があります。コントローラ内でWebサービスを再度呼び出す必要がないようにアクセスしたいと思います。これは可能ですか?コントローラ内のAuthorizationAttributeへのアクセス
1
A
答えて
1
あなたの最善のアプローチは、そのデータは単一のHTTP要求に対して有効となりますので、これらの変数を格納するためHttpContext.Current.Items
を使用することです。このような何か:
public class CustomAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.User.Identity == null) return false;
if (!httpContext.Request.IsAuthenticated) return false;
var user = new WSUser(); //get this from your webservice
if(user == null) return false;
httpContext.Items.Add("prop", user.Property);
return user.Authorized;
}
}
public class HomeController : Controller
{
[CustomAuthorize]
public ActionResult Index()
{
var property = (string) HttpContext.Items["prop"];
return View();
}
}
あなたはまた、クリーンなコードを維持するとSingle responsibility principle
0
静的なクラスにこれらの変数を保存して保存することができます。しかし、洗練されたソリューションは、コントローラの中でパラメータのように呼び出され、静的クラスを読み込んで必要なプロパティを返すモデルバインダオブジェクトを持つことです。 おそらく、セキュリティを適用している場合は、Webサービスを毎回呼び出すことが最善の方法です。
関連する問題
- 1. ビュー内のコントローラの機能へのアクセス
- 2. コントローラ内の投稿データへのアクセス
- 3. 子コントローラの親コントローラへのアクセス
- 4. コントローラの機能へのアクセス
- 5. ASP.NETコア2.0のAuthorizationAttribute
- 6. コントローラから別のコントローラへのデータへのアクセス
- 7. コントローラ内のファイルとしてのSpringブートリソースへのアクセス
- 8. AngularJS:コントローラ内の指令のDOM要素へのアクセス
- 9. ユニットテストカスタムMVC AuthorizationAttribute
- 10. コントローラ内のルートファイルへのパス
- 11. 別のコントローラのcurrent_user変数へのアクセス
- 12. Angularjsのコンポーネント/コントローラ間のオブジェクトへのアクセス
- 13. モジュールサービスとコントローラからのローカルパラメータへのアクセス
- 14. コントローラからのコンポーネントへのアクセス
- 15. CoffeeScriptのコントローラ変数へのアクセス
- 16. ASP.NET MVCアプリケーションのコントローラ/アクションリストへのアクセス
- 17. symfonyのコントローラへのアクセスをテストする
- 18. コントローラからのUserProfileへのアクセスMVC 4
- 19. Emberコントローラの変数へのアクセス
- 20. コントローラからのディレクティブメソッドへのアクセス
- 21. コントローラから次へのアクセス変数
- 22. へのアクセス親コントローラは、ここで1.5
- 23. 親コントローラへの移行とアクセス
- 24. mvcのコントローラからモデルクラスへのプライベートコンストラクタへのアクセス方法4
- 25. コントローラのメソッド内のフォームフィールドにアクセス
- 26. サービスファブリック内のファイルシステムへのアクセス
- 27. ルートコンポーネント内のthis.props.location.pathnameへのアクセス
- 28. ルビーブロック内のシェフリソースへのアクセス
- 29. パーズサーバー内のクラウドコードへのアクセス#
- 30. レスキューブロック内のエラーメッセージへのアクセス
に従うことを別のクラスに
HttpContext.Current
からアイテムを格納および取得するためのロジックをカプセル化したいと思うあなただけの 'authorization'にアクセスしたいですあなたのコントローラの属性? –