Web/ASP.NET Core
[ASP.NET Core] Authorization Attribute 추가
WooGong Peter
2020. 8. 24. 11:42
상상코딩 입니다. ^^;
이렇게 하면 되지 않을까 하는...
지금 블로그에만 들어와 있는 상황인지라...
//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 ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형