2012-10-11 4 views
0

이 예제를 단순하게 유지하려면 내 사이트에는 두 개의 컨트롤러 인 UsersController & VenuesController가 있으며 둘 다 자체 "관리 권한"과 관련이 있습니다.MVC 3 액션/컨트롤러 속성/권한

따라서 사용자는 "사용자"관리자 권한 및/또는 "개최지"관리자 권한을

의 사용자가 로그인 (이 내 DB의 사용자 테이블에 부울 필드는) 내가 그 /이있을 수 있습니다 세션에서 그녀의 허가.

사용자에게 컨트롤러를 사용할 수있는 올바른 권한이 있는지 확인하기 위해 사용자 지정 특성을 사용하여 컨트롤러를 꾸미려고합니다. UserPermissionAttribute와 VenuePermissionAttribute를 생성하고 싶지 않습니다. 하나의 속성을 원합니다. bool 속성을 가져 와서 사실인지 확인합니다.

[CheckPermissionAttribute(_userSession.AdminPermissions.Users)] 
public class UsersController : Controller 
{ 

} 

[CheckPermissionAttribute(_userSession.AdminPermissions.Venues)] 
public class VenuesController : Controller 
{ 

} 

이 달성 할 수 있는가, 아니면 내가 PostSharp보고해야 또는 뭔가 다른이 같은 결과를 달성하기 위해?

+2

와의 standart 접근 방식은 왜 그냥 내장 역할 관리 기능을 사용하지 않을 사용자 역할 및 사용자를 생성하는 것이 좋습니다? 이러한 권한을 가지기를 원하는 사용자에게 VenuesAdmin 및 UsersAdmin 역할을 할당 한 다음 표준 Authorize 속성을 사용하여 검사를 추가하면됩니까? –

+0

응용 프로그램이 멤버십 공급자를 사용하지 않는다는 것을 의미하는 옵션 인, 아마도 가장 좋은 옵션 일 수 있습니다. 그래서 같은 것을 달성하는 다른 방법을 모색 중입니까? – lordy1981

+0

그러면 사용자가 누구인지 어떻게 알 수 있습니까? –

답변

0

매개 변수를 사용하여 속성을 만들 수 있습니다. 작업 필터 매개 변수는 작업 필터의 속성입니다.

하지만 AuthorizeAttribute

+0

응용 프로그램은 ASP.NET 멤버십을 사용하지 않습니다. 각 사용자의 사용 권한을 저장하는 사용자 정의 테이블이 있습니다. 응용 프로그램에서 나는 세션에서 이러한 권한을가집니다. 컨트롤러에서 특정 값을 세션에서 전달할 수있는 속성이 필요합니다. 즉, 사용자 컨트롤러 인 경우 Session [HasUsersPermission]을 전달해야합니다.이 필드는 bool 필드이므로 false 일 수 있습니다. 필자의 속성에서는 전달 된 값이 true인지 확인한 다음 액세스 할 수 있는지 확인하려고합니다. 이것은 회의장 컨트롤러에서 내가 세션 [HasVenuePermission] – lordy1981

+0

에 전달한다는 것을 의미합니다. 속성 매개 변수가 상수 값이어야한다는 것을 알고 있으므로, 이것을 달성하는 데 도움이 될 다른 것을 찾고 있습니다! – lordy1981