コントローラの上部にある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. asp.net MVCとOpenIDを使用してフォルダ全体を(認証付きで)簡単に保護する方法
- 3. XSSからASP.NET MVCを保護または保護する方法は?
- 4. シート全体を保護する方法はありませんか?
- 5. Pybossaを完全に保護する方法は?
- 6. mvcアプリケーション全体を相対的にルートにする方法は?
- 7. MVC RESTful Urlsをハッキングから保護する方法は?
- 8. ASP.NET MVC Webアプリケーションを保護する方法は?
- 9. prometheusデータソースをLDAP全体で保護する
- 10. テーブルデータ全体をアンドロイドに保存する方法は?
- 11. Googleマップのルート全体をDBに保存する方法は?
- 12. オブジェクトをアプリケーション全体に保持する方法は?
- 13. 環境全体をH2Oに保存する方法は?
- 14. Rails:Herokuでの開発テストのためにサイト全体を迅速に保護する方法は?
- 15. 私のホームオートメーションWebサーバーを最も安全に保護する方法は?
- 16. Skater obfuscator全体.NETアプリの保護が遅すぎる
- 17. ディレクトリを完全に保護する
- 18. symfonyのコントローラ全体をsfGuardで保護しますか?
- 19. シンクロナイザートークンパターンを使用してCSRFを安全に保護する方法は?
- 20. Integerの配列全体を保存する方法は?
- 21. session_idを保護する方法は?
- 22. NSUserDefaultsを保護する方法は?
- 23. Class.forName( "SimpleClass")を保護する方法は?
- 24. Webサービスを保護する方法は?
- 25. webHttpBindingを保護する方法は?
- 26. RESTfulサービスを保護する方法は?
- 27. 保護されたメソッドの単体テスト方法は?
- 28. ASP.NET MVCでページ全体のキャッシュを回避する方法
- 29. ユーザー認証とは別にExpress.js APIを保護する方法は?
- 30. 署名証明書を保護するこの方法は安全ですか?
検索**カスタム認可属性** – Dmitry
私自身の属性を作成するつもりはありません。ビルドされた役割/ユーザー権限コントロールを使用し、それらをエリアレベルで適用したいだけです。エリアレベルでIPのコードチェックをいくつか適用するといいかもしれませんが、.csファイルを作成して各コントローラのアクションから呼び出すことができますが、ちょっと面倒です。 –
"ロール/ユーザー権限の管理"には何を考慮していますか?私は '[Authorize]'属性を考えることはできません。あなたはあなたのエリアのベースコントローラを持つことができ、そのエリアのすべてのコントローラをそのベースコントローラから派生させ、ベースコントローラのカスタム権限属性を叩くことができます。それは全体の領域認可の世話をするだろうし、IPで制限するためにそれをカスタマイズすることができた – Dmitry