권한부여: 간단한 권한부여

등록일시: 2017-01-14 11:00,  수정일시: 2017-01-20 11:11
조회수: 367
본 번역문서는 ASP.NET Core 기술을 널리 알리고자 하는 개인적인 취지로 번역되어 제공되는 문서로, 원문을 비롯한 모든 저작권은 마이크로소프트사에 있습니다. 마이크로소프트사의 요청이 있을 경우, 언제라도 게시가 중단될 수 있습니다. 본 번역문서에는 오역이 포함되어 있을 수 있으며 주석도 번역자 개인의 견해일뿐입니다. 마이크로소프트사는 본 문서의 번역된 내용에 대해 일체의 보장을 하지 않습니다. 번역이 완료된 뒤에도 제품이 업그레이드 되거나 기능이 변경됨에 따라 원문도 변경되거나 보완되었을 수 있으므로 참고하시기 바랍니다.
본문에서는 Authorize 어트리뷰트를 이용한 가장 간단한 형태의 권한부여 방식을 살펴봅니다.

MVC에서 권한부여는 Authorize 어트리뷰트와 이 어트리뷰트가 제공해주는 다양한 매개변수들을 통해서 제어됩니다. 컨트롤러나 액션에 Authorize 어트리뷰트를 적용하면 인증된 사용자만 해당 컨트롤러와 액션에 접근할 수 있게 됩니다.

가령, 다음 코드는 인증된 사용자만 AccountController에 접근할 수 있도록 제한합니다:

[Authorize]
public class AccountController : Controller
{
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

만약 컨트롤러 전체가 아닌 특정 액션에만 권한부여를 설정하고 싶다면 해당 액션에만 Authorize 어트리뷰트를 적용하면 됩니다:

public class AccountController : Controller
{
    public ActionResult Login()
    {
    }

    [Authorize]
    public ActionResult Logout()
    {
    }
}

이렇게 하면 인증된 사용자만 로그아웃 기능에 접근할 수 있습니다.

또는 AllowAnonymous 어트리뷰트를 사용해서 인증되지 않은 사용자도 개별 액션에 접근할 수 있도록 허용할 수도 있습니다. 이를테면:

[Authorize]
public class AccountController : Controller
{
    [AllowAnonymous]
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

이런 방식으로 어트리뷰트를 적용할 경우, 기본적으로는 인증된 사용자만 AccountController에 접근할 수 있지만, 인증된 사용자인지 또는 인증되지 않은 사용자인지 여부에 관계없이, 즉 익명 상태와 무관하게 모든 사용자가 접근할 수 있도록 설정된 Login 액션은 예외로 간주됩니다.

경고

[AllowAnonymous] 어트리뷰트는 모든 권한부여 관련 구문을 우회하여 무시해버립니다. 그러므로 [AllowAnonymous] 어트리뷰트와 [Authorize] 어트리뷰트를 동시에 적용하면 결과적으로 [Authorize] 어트리뷰트는 항상 무시됩니다. 예를 들어, 특정 컨트롤러에 [AllowAnonymous] 어트리뷰트를 적용한 상태에서, 해당 컨트롤러나 컨트롤러 액션에 [Authorize] 어트리뷰트를 적용하면 [Authorize] 어트리뷰트는 모두 무시됩니다.

COPYRIGHT © 2001-2017 EGOCUBE. ALL RIGHTS RESERVED.
Total Visit Count: 9,565,327, v1.9.0.28773 β