ASP.NET 4では、私たちはちょうどGlobal.asaxの中で次のように追加するには、以下:ASP.NETコアにグローバルフィルタを追加する方法は?
GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });
ASP.NETコアでこれを行うにはどのように任意のアイデア? docsから
ASP.NET 4では、私たちはちょうどGlobal.asaxの中で次のように追加するには、以下:ASP.NETコアにグローバルフィルタを追加する方法は?
GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });
ASP.NETコアでこれを行うにはどのように任意のアイデア? docsから
:
:あなたはStartup
クラスに ConfigureServices
方法でMvcOptions.Filters
コレクションに追加し (すべてのコントローラとアクションのための)グローバルフィルタを登録することができ
MvcOptions.Filters
にAuthorizeAttribute
を追加することはできません。AuthorizationPolicy
を作成し、AuthorizeFilter
を使用します。var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .RequireRole("Admin", "SuperUser") .Build(); services.AddMvc(options => { options.Filters.Add(new AuthorizeFilter(policy)); });
あなたはまた、以下のコードを使用することができます。これはインスタンスではなくタイプを使用しています。
services.AddMvc(options =>
{
options.Filters.Add(typeof(AuthorizeFilter));
});
依存性注入を使用すると、ポリシーオブジェクトを解決できます。あなたは次のようにRazor Page flavor of the ASP.NET Core 2.0あなたがグローバルフィルタを追加することができます使用している場合場合は
:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/"); // Require users to be authenticated.
options.Conventions.AuthorizeFolder("/", "YourPolicyName"); // Require a policy to be full filled globally.
});
あなたは[ドキュメント]を確認しました(https://docs.microsoft.com/en-us/aspnet/コア/ mvc/controllers/filters#フィルタ - スコープと実行順序)? – tmg
@tmgこれをありがとう、以前のASP.NETバージョンとは異なり、コアで「新しいAuthorizeAttribute()」としてパイプラインに注入できないようですが、私は今、上記を移行する方法を探していますコアのフィルタ。 – xird