2013-07-08 2 views
0

시스템에서 사용자 역할을 검사하여 특정 페이지에 액세스하도록 허용하는 메커니즘을 구현하는 가장 좋은 방법은 무엇입니까? 또한 '슈퍼'역할을 가진 사용자의 경우와 같이 페이지에서 링크/액션을 사용하려면 나머지는 볼 수 있지만 데이터는 삭제/편집 할 수 있습니까?페이지 권한 기반의 역할 ASP.NET MVC4

사용자 정보는 ASP.NET MVC의 사용자 관리 (webapp에 임베드 된 .mdf 데이터베이스에서 사용자를 생성하는 곳)에서 사용자 관리를 사용하지만 내 사용자 모듈을 개발했습니다. 사용자 인증, 등록 및 삭제).

그렇다면이 문제의 가장 좋은 방법은 무엇입니까? 당신은 사용자 정의 ValidationAttribute 작성합니다

+0

: 당신이 그것을 적용 ..then

public class IsAnAdminAttribute : ValidationAttribute { protected override bool IsValid(object obj) { if (Membership.UserInRole("admin")) return true; // they can access it else return false; // can't access it } } 

는 컨트롤러의 액션 http://stackoverflow.com/questions/1356102/role-based-security-asp-net-mvc –

+0

seriousl 어떤 사람들을위한 downvote? –

+0

먼저 검색하거나 추천을 볼 수 있기 때문에). –

답변

2

: 기본적으로 http://msdn.microsoft.com/en-AU/library/system.componentmodel.dataannotations.validationattribute.aspx

, 당신은 ValidationAttribute에서 상속 및 IsValid() 오버라이드 (override) :

[HttpGet] 
[IsAnAdmin] 
public ActionResult MyAction() { 
    // only administrators can access this now 
} 
+0

'admin'과'normal '의 두 가지 역할과 컨트롤러 메소드'MonitorTraffic'가 있다고 가정합니다. 이 컨트롤러 메소드에서'admin' 만이이 페이지에 접근 할 수 있도록 필터링하는 방법은 무엇입니까? 미안 MVC4에 새로운 나 자신. 주어진 예제에서 필자는 주석이 어떻게 그렇게 할 수 있는지를 보지 못했습니다. 예를 보여 주시겠습니까? –

+0

답변을 업데이트했습니다. 이 속성은'ValidationAttribute'에서 상속 받기 때문에 MVC에 의해 해고됩니다. 'IsValid' 메쏘드를 호출하고'IsValid'가'true'를 반환하면 접근이 허가 될 것입니다. 'false'를 반환하면 액세스가 거부됩니다. –

+0

알기. 그러나이 클래스는 어디에서 만들 수 있습니까? 나는 그것을 넣을 적절한 장소를 의미합니까? 아니 모델에서 내가 맞춰? 죄송합니다, 초보자 용 질문 다시 –