간단한 권한부여
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]
어트리뷰트는 모두 무시됩니다.