login register Sysop! about ME  
qrcode
    최초 작성일 :    2017년 02월 22일
  최종 수정일 :    2017년 02월 22일
  작성자 :    soggun
  편집자 :    soggun (송원석)
  읽음수 :    9,475

강좌 목록으로 돌아가기

필자의 잡담~

이번 컬럼은 ASP.NET Core 보안 강좌의 8번째 글, 뷰 기반 권한부여에 대한 글입니다.

모든 컬럼은 http://docs.asp.net의 내용을 참고하여 번역한 것입니다. Windows 뿐만 아니라 Linxu, OS X에서도 동작하는 완전한 크로스 플랫폼 서버기술인 ASP.NET Core! 기대해 주세요.

본 번역문서는 개인적인 취지로 번역되어 제공되는 문서로, 원문을 비롯한 모든 저작권은 마이크로소프트사에 있습니다. 마이크로소프트사의 요청이 있을 경우, 언제라도 게시가 중단될 수 있습니다. 본 번역문서에는 오역이 포함되어 있을 수 있으며 주석도 번역자 개인의 견해일뿐입니다. 마이크로소프트사는 본 문서의 번역된 내용에 대해 일체의 보장을 하지 않습니다. 번역이 완료된 뒤에도 제품이 업그레이드 되거나 기능이 변경됨에 따라 원문도 변경되거나 보완되었을 수 있으므로 참고하시기 바랍니다.

원문: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/views

뷰 기반 권한부여

개발자의 입장에서는 현재 사용자의 신원(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 요소를 숨긴다고 해서 사용자가 리소스에 접근할 수 없다는 뜻은 아닙니다. 반드시 컨트롤러 코드에서도 사용자의 권한을 확인해야만 합니다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})