상상코딩 입니다. ^^;

이렇게 하면 되지 않을까 하는...

지금 블로그에만 들어와 있는 상황인지라... 

//Startup class 의 ConfigureServices method 에 다음을 추가합니다.
services.AddHttpContextAccessor();
// WoojjaExcludeAuthFilter 라는 Custom Attribute 를 생성합니다.
public class WoojjaExcludeAuthFilter : AuthorizeAttribute, IAuthorizationFilter
{
    public WoojjaAuthFilter(params string[] roles)
    {
        ProtectedRoles = roles;
    }

    public string[] ProtectedRoles { get; }

    public void OnAuthorization(AuthorizationFilterContext context)
    {
	//container 로부터 IHttpContextAccessor haccess 를 Resolve
        var haccess = context.HttpContext.RequestServices.GetRequiredService<IHttpContextAccessor>();
	ClaimsPrincipal cp = hcontext.User;

/*
	// 또는 WebApi 에서 Claim 을 조회.
        using var httpClient = httpClientFactory.CreateClient();

        var resp = await httpClient.GetAsync("https://woojja.com/API/GetAccountClaims/woojja");
        ProtectedRoles = await resp.Content.ReadAsStringAsync();
*/

	for(int i = 0: i < ProtectedRoles.Count: i++){
		if(cp.Claims.Where(c => c.Type == jwtClaim.ToString()).Count > 0){			
			context.Result = new UnauthorizedResult();
		}
	}
    }
}

그리고 Action Result 에 적용합니다. 

[Authorize(Roles = "Administrators"]
[WoojjaExcludeAuthFilter("Sales","HRM")]
public async Task<IActionResult> Index()

조만간 적용해 보고 다시 글을 올리겠습니다. ^^;;;

 

행복한 고수되셔요...

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




Posted by woojja

댓글을 달아 주세요