login register Sysop! about ME  
qrcode
    최초 작성일 :    2017년 01월 17일
  최종 수정일 :    2017년 01월 17일
  작성자 :    soggun
  편집자 :    soggun (송원석)
  읽음수 :    2,279

강좌 목록으로 돌아가기

필자의 잡담~

이번 컬럼은 ASP.NET Core 보안 강좌의 2번째 글, 간단한 권한부여에 대한 글입니다.

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

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

원문: https://docs.microsoft.com/ko-kr/aspnet/core/security/authorization/simple

간단한 권한부여

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] 어트리뷰트는 모두 무시됩니다.


authored by


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

로딩 중입니다...

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