Authorization in Blazor
Blazor의 권한 부여, 특히 사용자의 인증 상태에 따라 UI 요소를 표시하고 숨기는 방법에 대해 설명합니다.
ASP.NET Core에서 권한 부여
- 인증은 사용자가 누구인지 식별하는 프로세스입니다.
- 권한 부여는 사용자가 할 수 있는 것과 할 수 없는 것을 식별하는 프로세스입니다.
- 예를 들어, 로그인한 사용자가 관리자인 경우 주문을 생성, 읽기, 업데이트 및 삭제할 수 있지만 일반 사용자는 주문을 볼 수만 있고 주문 생성, 업데이트 또는 삭제는 할 수 없습니다.
액세스는 일반적으로 다음 여부에 따라 허용되거나 거부됩니다.
- 사용자가 인증(로그인)되었습니다.
- 사용자는 역할에 있습니다.
- 사용자에게 소유권이 있습니다.
- 정책이 만족됩니다
Blazor AuthorizeView 구성 요소
- Blazor에서는 구성 요소를 사용하여
AuthorizeView
사용자에게 UI 요소를 볼 수 있는 권한이 있는지 여부에 따라 UI 요소를 표시하거나 숨깁니다. - 이 예에서
AuthorizeView
구성요소는 매개변수(예: 역할 또는 정책) 없이 가장 간단한 형태로 사용되므로 사용자가 인증되었는지 여부만 확인합니다. - 사용자가 인증되면 구성 요소의 콘텐츠
<Authorized>
가 표시되고, 그렇지 않으면 구성 요소의 콘텐츠<NotAuthorized>
가 표시됩니다.
CascadingAuthenticationState 구성 요소
다음과 같은 오류가 발생하는 경우
InvalidOperationException: 권한 부여에는 Task<AuthenticationState> 유형의 계단식 매개 변수가 필요합니다. 이를 제공하려면 CascadingAuthenticationState를 사용하는 것이 좋습니다.
오류 메시지는 명확합니다. 이는 우리에게 무엇을 해야 하는지 알려줍니다. 인증 상태는 애플리케이션에 제공되어야 하며 구성 <Router>
요소를 <CascadingAuthenticationState>
구성 요소로 래핑하여 이를 수행합니다. 구성 요소가 파일 App.razor
에 <Router>
에 있습니다 .
Blazor의 역할 또는 정책 기반 권한 부여
Blazor에서는 역할 기반 인증과 정책 기반 인증이 모두 지원됩니다. 역할 기반 인증의 경우 Roles
매개변수를 사용하십시오.
정책 기반 승인의 경우 Policy
매개변수를 사용합니다.
AuthorizeView 구성 요소 컨텍스트 변수
- AuthorizeView 구성 요소는 컨텍스트 변수를 노출합니다.
- 변수 유형은 AuthenticationState입니다.
- 이를 사용하여 인증된 사용자 정보에 액세스합니다.
다음 예에서는 context
변수를 사용하여 로그인한 사용자 이름을 표시합니다.
AuthenticationStateProvider 서비스
- Blazor에는 AuthenticationStateProvider 서비스라는 기본 제공 서비스가 있습니다.
- 이 서비스는 ASP.NET Core의 HttpContext.User에서 인증 상태 데이터를 가져옵니다.
- 이는 인증 상태가 기존 ASP.NET Core 인증 메커니즘과 통합되는 방식입니다.
- AuthorizeView 구성 요소 및 CascadingAuthenticationState 구성 요소에서 인증 상태를 가져오는 데 사용되는 서비스입니다.
- AuthenticationStateProvider를 직접 사용하지 마세요. AuthorizeView 구성 요소를 사용합니다.
- AuthenticationStateProvider를 직접 사용할 때의 주요 단점은 기본 인증 상태 데이터가 변경되는 경우 구성 요소에 자동으로 알림이 전달되지 않는다는 것입니다.