의 모든 작업에 대한 [권한 부여 (역할 = "admin"을)] 설정할 수있는 방법 : 내 컨트롤러에있는 모든 액션을 설정하고인가가 난 다음 가지고 MVC 컨트롤러
[Authorize(Roles = "admin")]
. 그러나 컨트롤러에 대해이 작업을 전 세계적으로 수행 할 수있는 방법이 있습니까?
의 모든 작업에 대한 [권한 부여 (역할 = "admin"을)] 설정할 수있는 방법 : 내 컨트롤러에있는 모든 액션을 설정하고인가가 난 다음 가지고 MVC 컨트롤러
[Authorize(Roles = "admin")]
. 그러나 컨트롤러에 대해이 작업을 전 세계적으로 수행 할 수있는 방법이 있습니까?
[Authorize(Roles = "admin")]
public class AdminController : Controller
{
}
이 속성은 컨트롤러에서도 작동합니다. 당신은 넣을 수 있습니다 [HandleError]
:
당신은
[Authorize(Roles = "user")]
public class BaseController : Controller
{
}
public class NewsController : BaseController
{
}
public class ForumController : BaseController
{
[HttpPost, Authorize(Roles="admin")]
public ActionResult Delete(int id)
{
}
}
업데이트
첫 번째 질문도 기본 컨트롤러를 만들고 (모든 파생 컨트롤러에서 동일한 인증을하기 때문에 얻을) 그것의 속성을 설정할 수 있습니다 기본 컨트롤러에서 모든 컨트롤러에서 MVC의 오류 처리를 얻으십시오. 방금 설명했습니다 blog entry.
두 번째 질문 : 예. 가장 구체적인 [Authorize]
속성을 작업에 추가하십시오. (예를 들어 기본 컨트롤러에서 "사용자"를 승인하고 편집 작업에서 "관리자")를 승인합니다.
컨트롤러에 특성을 표시하면 컨트롤러의 모든 동작 방법이 제한됩니다.
네, 그 속성을 선언 할 클래스의 맨 위에 놓기 만하면됩니다.
[Authorize(Roles = "admin")]
public class TheController : Controller
이렇게
는,이 컨트롤러의 모든 행동은 관리자 역할에 대해 확인됩니다.
저는 개인적으로 이런 종류의베이스 컨트롤러가있는 것을 선호합니다. +1 – BigMike
기본 컨트롤러에 다른 무엇을 넣으시겠습니까? 내가 물건을 더 간단하게 만들 기회를 놓치고 있는지 궁금해. –
또 다른 관련 질문입니다. 컨트롤러 클래스 수준에서이 작업을 수행한다고 가정 해 보겠습니다. 그런 다음 "user"및 "admin"과 같은 두 가지 역할이 모두 동일한 작업에 액세스하도록 허용하려는 경우는 어떻습니까? 행동 수준에서 재정의 할 수 있습니까? 어떻게해야합니까? –