コントローラの上部にあるMVCで、[Authorize()]
属性を使用して、コントローラ全体へのアクセスを認証された特定のユーザーやロールに制限できますが、IPではなく、コントローラーインスタンスごとに制限する必要があります。 MVC Area全体へのアクセスを認証されたUser/Roleまたは要求元IPに制限する方法はありますか?IP /ロール/ユーザー別にMVCエリア全体を保護する方法は?
8
A
答えて
15
お住まいの地域でベースコントローラを作成します。
[AuthorizeArea(AllowIpAddresses = new [] {"1.1.1.1", "1.2.3.4"})]
public class CustomAreaBaseController : Controller
{
public CustomAreaBaseController()
{
// possibly any other common code that you want to run for all controllers in this area
}
}
は、お住まいの地域のすべてのコントローラがベースコントローラから派生しておいてください。
public class HomeController : CustomAreaBaseController
{
// actions for this controller
}
は属性を許可するカスタム作成のための:
public class AuthorizeArea : AuthorizeAttribute
{
public string[] AllowIpAddresses { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool isValid = false;
if (httpContext == null)
throw new ArgumentNullException("httpContext");
// get current ip address
var ipAddress = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress))
ipAddress = httpContext.Request.ServerVariables["remote_host"];
if (AllowIpAddresses.Contains(ipAddress)) isValid = true;
return base.AuthorizeCore(httpContext) && isValid;
}
}
関連する問題
- 1. ASP.NET 5 MVC 6アプリケーション全体を保護する
- 2. シート全体を保護する方法はありませんか?
- 3. asp.net MVCとOpenIDを使用してフォルダ全体を(認証付きで)簡単に保護する方法
- 4. MVC RESTful Urlsをハッキングから保護する方法は?
- 5. テーブルデータ全体をアンドロイドに保存する方法は?
- 6. Googleマップのルート全体をDBに保存する方法は?
- 7. オブジェクトをアプリケーション全体に保持する方法は?
- 8. Rails:Herokuでの開発テストのためにサイト全体を迅速に保護する方法は?
- 9. ディレクトリを完全に保護する
- 10. symfonyのコントローラ全体をsfGuardで保護しますか?
- 11. シンクロナイザートークンパターンを使用してCSRFを安全に保護する方法は?
- 12. NSUserDefaultsを保護する方法は?
- 13. session_idを保護する方法は?
- 14. webHttpBindingを保護する方法は?
- 15. Webサービスを保護する方法は?
- 16. ASP.NET MVCでページ全体のキャッシュを回避する方法
- 17. Cプログラミング:フォーク全体で保護されたメモリ()
- 18. ASP.NET MVCアプリケーションチェックリストを保護する
- 19. MVCのフォルダを保護する
- 20. MVC 4別のプロジェクト内の管理エリア
- 21. asp.net mvcエリアは別のエリアの一部としてルーティングされます
- 22. デコンパイルからJavaコードを保護または保護する方法
- 23. ウェブサイト全体をパスワードで保護する方法はありますが、特定のファイル1つに公開アクセスを許可する方法
- 24. iOSバンドルファイルを保護する方法
- 25. リクエストボディを保護する方法
- 26. Pythonでパスワードを保護する方法
- 27. 私のファイルを保護する方法
- 28. NetStyleでウェブソケットを保護する方法
- 29. JQueryパラメータを保護する方法
- 30. 投稿フォームを保護する方法
検索**カスタム認可属性** – Dmitry
私自身の属性を作成するつもりはありません。ビルドされた役割/ユーザー権限コントロールを使用し、それらをエリアレベルで適用したいだけです。エリアレベルでIPのコードチェックをいくつか適用するといいかもしれませんが、.csファイルを作成して各コントローラのアクションから呼び出すことができますが、ちょっと面倒です。 –
"ロール/ユーザー権限の管理"には何を考慮していますか?私は '[Authorize]'属性を考えることはできません。あなたはあなたのエリアのベースコントローラを持つことができ、そのエリアのすべてのコントローラをそのベースコントローラから派生させ、ベースコントローラのカスタム権限属性を叩くことができます。それは全体の領域認可の世話をするだろうし、IPで制限するためにそれをカスタマイズすることができた – Dmitry