2017-05-04 9 views
1

런타임에 역할을 변경하는 방법이 있습니까? https://channel9.msdn.com/Series/Customizing-ASPNET-Authentication-with-Identity/02 그가 32:43에서 물었습니다.asp.net web api authorization framework 런타임시 역할을 동적으로 변경하는 방법이 있습니까?

+0

for example 휴가중인 경우 공동 보조자가 시스템의 일부 제안을 승인 할 권한을 부여하려는 경우. 귀하의 보조자에게 계정 정보를 제공하는 가장 좋은 방법이라고 생각하십니까? 저는 이런 종류의 상황에서 각 컨트롤러의 역동적 인 역할을 바꾸는 역할과 같은 아이디어를 가지고 있습니다. 예를 들어, aproval 메서드에 대한 Aproval 역할입니다. 제안서를 보내기위한 제안 역할을 보냅니다. 나는 역동적으로 그 역할을 추가하거나 제거 할 수 있다고 생각한다. 그러나 이것은 사용자를위한 긴 과정 일 것이다. 개별 역할을 추가하고 싶지 않았습니다. 나는 그것을 어떻게하는지 배우고 싶다. – Kagan

답변

0

흥미로운 질문이지만, 언제 이것을 사용하고 싶지는 모르겠습니다.

사용자가 갖고있는 역할을 결정하기 위해 토큰에 추가 된 소유권 주장이 사용됩니다. 따라서 데이터베이스를 호출 할 필요가 없습니다. 동적으로 작업하고 싶다면 실제 역할에 대해 데이터베이스를 호출해야 할 수 있습니다.

[Authorize] 속성을 사용하면 동적으로 어떤 것도 할 수 없습니다. 문자열을 주장과 비교합니다. 일치하는 경우 액세스 권한이 부여되고 그렇지 않으면 액세스가 거부됩니다. 이 문제를 해결하는 한 가지 방법은 User.IsInRole (x) 인 경우 모든 권한이 부여 된 사용자 [권한 부여]에 대한 액세스 권한을 부여하고 코드에서 테스트하는 것입니다.

다른 옵션은 사용자 자신의 AuthorizeAttribute를 작성하거나 AuthorizationFilterAttribute를 추가 할 수 있습니다.