.NET Core 1.1에서 API를 작성하고 있습니다. 모든 다른 컨트롤러가 상속하는 기본 컨트롤러에 개체를 HttpContext.User
에서 빌드하고 인증을 기본적으로 사용하도록 설정합니다 (필요할 경우 [AllowAnonymous]
로 수동으로 비활성화해야 함). User
개체에는 IsAdmin
속성이 있습니다. 지금은 사용자가 아래의 각 관련 기능의 맨 위에있는 관리자인지 확인 중이지만이 코드를 단순화하고 정리하는 사용자 정의 속성을 추가하는 방법이 있어야합니다..NET Core의 사용자 지정 권한
bool.Parse(HttpContext.User.FindFirst("IsAdmin")?.Value)
이 대신 :
[HttpGet]
public async Task<IActionResult> Get()
{
if (!User.IsAdmin)
return Forbid();
// logic
}
내가이 (또는 비슷한)를 싶습니다
[AdminOnly]
[HttpGet]
public async Task<IActionResult> Get()
{
// logic
}
I 참고로
, User.IsAdmin
이 속기입니다 빌드하려고 시도하는 source for [AuthorizeAttribute]
을 보았습니다.하지만 쉘 일 뿐이므로 아야, 진짜 마술이 일어나는 곳.
어떻게하면됩니까?
, 당신은 기본적를 사용 속성을 명명 된 정책으로 정의한 다음 시작시 정책을 정의하여 역할이나 클레임 또는 기타 규칙을 요구합니다. https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies –
@blowdart (ASP.NET 핵심 보안 책임자)의 대답을 확인하면 자신의 특성을 만들지 않아야합니다. – Tseng
@JoeAudette 필자가 원했던 것처럼 보였습니다. 내가 어떻게 그것을 놓쳤는 지 모릅니다. :/[Claims-based auth] (https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims#adding-claims-checks)는 작동합니다. 주장은 '사실'입니다. 이 질문을 답으로 추가하면 받아 들일 것입니다. – vaindil