2017-02-01 16 views
10

ve aşağıda biz sadece Global.asax aşağıdakileri ekleyin: nasıl ASP.NET Çekirdek bunu yapmanınASP.NET Core'da global filtreler nasıl eklenir? ASP.NET 4'te

GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" }); 

bir fikrin? docs itibaren

+0

sen [docs] kontrol ettin (https://docs.microsoft.com/en-us/aspnet/ çekirdek/mVC/kontrol/filtreler # filtre kapsamları ve düzen-of-yürütme)? – tmg

+0

@tmg bunun için teşekkür ederiz, öyle görünüyor ki, önceki ASP.NET sürümlerinden farklı olarak çekirdekte "yeni AuthorizeAttribute()" olarak boru hattına enjekte edilemiyor gibi görünüyor, şimdi yukarıdakileri taşıyabilmek için bir yol arıyorum çekirdeği süz. – xird

cevap

16

:

: Sen Startup sınıfta ConfigureServices yöntemde MvcOptions.Filters koleksiyonuna ekleyerek (bütün kontrolörler ve eylemler için) küresel bir filtre kaydedebilirsiniz

AuthorizeAttribute'u MvcOptions.Filters'a ekleyemezsiniz. Bir AuthorizationPolicy oluşturma ve AuthorizeFilter kullanın:

var policy = new AuthorizationPolicyBuilder() 
     .RequireAuthenticatedUser() 
     .RequireRole("Admin", "SuperUser") 
     .Build(); 

services.AddMvc(options => 
{ 
    options.Filters.Add(new AuthorizeFilter(policy)); 
}); 
1

Ayrıca aşağıdaki kodu kullanabilirsiniz. Bu bir örnek yerine bir tür kullanıyor.

services.AddMvc(options => 
{ 
    options.Filters.Add(typeof(AuthorizeFilter)); 
}); 

Ve Bağımlılık Enjeksiyonu kullanarak ilke nesnesini çözebilirsiniz. aşağıdaki gibi Razor Page flavor of the ASP.NET Core 2.0 global filtreleri ekleyebilirsiniz kullanıyorsanız durumda

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. 
     });