2017-11-01 18 views
0

StartManager.cs에서 내 클래스에 RoleManager를 주입하는 방법은 무엇입니까? 다음은 내 코드입니다 : 여기 내가으로 roleManager CustomRoleRequirement.csStartManager에서 RoleManager <Role>을 수업에 주입하는 방법은 무엇입니까?

public class CustomRoleRequirement : AuthorizationHandler<CustomRoleRequirement>, IAuthorizationRequirement 
    { 
     private readonly RoleManager<Role> _roleManager; 
     public CustomRoleRequirement(RoleManager<Role> roleManager) 
     { 
      _roleManager = roleManager; 
     } 
    } 

를받을 그리고 당신의 Startup 클래스에 services.AddIdentity<...> 추가 여기 Startup.cs

services.AddAuthorization(options => 
      { 
       options.AddPolicy("AccountManager", policy => policy.AddRequirements(new CustomRoleRequirement())); 
      }); 
+1

해당 코드를 실행 했습니까? 오류가 있었나요? 그것은 그대로 작동해야합니다 –

답변

1

에서 주입하고 싶다. Identity가있는 템플릿을 사용하여 프로젝트를 만든 경우 이미 있습니다. 신원은 이미 RoleManager<TRole>를 주사한다.

services.AddIdentity<ApplicationUser, ApplicationRole>() 
    .AddEntityFrameworkStores<ApplicationDbContext>() 
    .AddDefaultTokenProviders(); 
+0

RoleManager는 IdentityFramework의 일부이므로 시작시 서비스에 ID를 추가 할 때 자동으로 주입되는 이유를 잊어 버렸습니다. – ZombieBot

+0

죄송합니다. 질문을 잘못 입력했다고 생각합니다. 내 클래스에서 RoleManager 을 생성자를 통해 전달하면 어떻게 사용할 수 있습니까? '새로운 CustomRoleRequirement()' –