권한부여: 뷰 기반 권한부여
- 본 번역문서의 원문은 View Based Authorization docs.microsoft.com 입니다.
- 본 번역문서는 ASP.NET Core 보안 : 뷰 기반 권한부여 www.taeyo.net 에서도 함께 제공됩니다.
개발자의 입장에서는 현재 사용자의 신원(Identity)을 기반으로 UI를 보여주고 숨기거나, 또는 변경해야 하는 경우도 많습니다.
이런 경우, MVC 뷰에서 의존성 주입을 통해서 권한부여 서비스에 접근할 수 있습니다.
Razor 뷰에 권한부여 서비스를 주입하려면 @inject IAuthorizationService AuthorizationService
같이 @inject
지시문을 사용하면 됩니다.
권한부여 서비스를 모든 뷰에서 사용하고 싶다면 @inject
지시문을 Views
디렉터리에 위치한 _ViewImports.cshtml
파일에 작성하면 됩니다.
뷰에서 의존성 주입을 사용하는 방법에 대한 더 자세한 정보는 뷰에 서비스 주입하기 문서를 참고하시기 바랍니다.
뷰에 권한부여 서비스를 주입한 뒤에는, 리소스 기반 권한부여 문서에서 검사를 하기 위해서 AuthorizeAsync
메서드를 호출했던 것과 정확하게 동일한 방법으로 메서드를 사용하면 됩니다:
@if (await AuthorizationService.AuthorizeAsync(User, "PolicyName"))
{
<p>This paragraph is displayed because you fulfilled PolicyName.</p>
}
때로는 권한부여의 대상 리소스로 뷰 모델이 사용될 수도 있습니다.
그런 경우에도 리소스 기반 권한부여 문서에서 검사를 하기 위해 AuthorizeAsync
메서드를 호출했던 것과 같은 방법을 사용하면 됩니다:
@if (await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit))
{
<p><a class="btn btn-default" role="button"
href="@Url.Action("Edit", "Document", new { id = Model.Id })">Edit</a></p>
}
이 코드를 살펴보면 권한부여에서 고려해야 할 리소스로 모델이 전달되고 있음을 확인할 수 있습니다.
경고
권한부여 메서드를 이용해서 UI의 일부분을 보여주거나 숨겼다고 해서 그대로 안심해서는 안됩니다. UI 요소를 숨긴다고 해서 사용자가 리소스에 접근할 수 없다는 뜻은 아닙니다. 반드시 컨트롤러 코드에서도 사용자의 권한을 확인해야만 합니다.
- 권한부여: 개요 2017-01-14 08:00
- 권한부여: 간단한 권한부여 2017-01-14 11:00
- 권한부여: 역할 기반 권한부여 2017-01-14 14:00
- 권한부여: 클레임 기반 권한부여 2017-01-15 08:00
- 권한부여: 사용자 지정 정책 기반 권한부여 2017-01-15 11:00
- 권한부여: 요구사항 처리기와 의존성 주입 2017-01-15 14:00
- 권한부여: 리소스 기반 권한부여 2017-01-16 08:00
- 권한부여: 뷰 기반 권한부여 2017-01-16 11:00
- 권한부여: 스키마별 신원 제한 2017-01-16 14:00
- 인증: ASP.NET Core Identity 살펴보기 2017-01-30 08:00
- 인증: Facebook, Google 및 기타 외부 공급자를 이용한 인증 활성화시키기 2017-02-13 08:00
- 인증: Facebook 인증 구성하기 2017-02-13 11:00
- 인증: Twitter 인증 구성하기 2017-02-20 08:00
- 인증: Google 인증 구성하기 2017-02-20 11:00
- 인증: Microsoft 계정 인증 구성하기 2017-02-20 14:00
- 인증: 계정 확인 및 비밀번호 복구 2017-03-06 08:00
- 인증: SMS를 이용한 2단계 인증 2017-03-13 08:00
- 인증: ASP.NET Core Identity 없이 Cookie 미들웨어 사용하기 2017-03-20 08:00
- 데이터 보호: 데이터 보호 개요 2017-03-27 08:00
- 데이터 보호: 데이터 보호 API 시작하기 2017-03-29 08:00
- 데이터 보호: 소비자 APIs 개요 2017-03-31 08:00
- 데이터 보호: 용도 문자열 2017-04-03 08:00
- 데이터 보호: ASP.NET Core의 용도 계층 구조 및 다중-테넌트(Multi-Tenancy) 2017-04-05 08:00
- 데이터 보호: 비밀번호 해싱 2017-04-07 08:00
- 데이터 보호: 보호된 페이로드의 수명 제한하기 2017-04-10 08:00
- 테이터 보호: 키가 취소된 페이로드의 보호 해제하기 2017-04-12 08:00
- 데이터 보호: 데이터 보호 구성하기 2017-04-14 08:00
- 데이터 보호: 키 관리 및 수명 기본 설정 2017-04-17 08:00
- 데이터 보호: 머신 수준 정책 2017-04-19 08:00
- 데이터 보호: 비-DI 인식 시나리오 2017-04-21 08:00
- 호환성: 응용 프로그램 간 인증 쿠키 공유하기 2017-05-12 08:00
- 호환성: ASP.NET의 <machineKey> 요소 대체하기 2017-05-16 08:00
- 교차 원본 요청 활성화시키기 (CORS) 2017-05-17 08:00
- ASP.NET Core 응용 프로그램에 SSL 적용하기 2017-05-18 08:00
- 개발 중 민감한 응용 프로그램 정보 안전하게 저장하기 2017-05-19 08:00