2014-09-11 1 views
0

명령을 실행하고 컨트롤을 보는 등의 권한을 관리하고 싶습니다. 따라서 ICommand 인터페이스를 구현하는 UserAction 클래스가 있습니다.CanExecute 명령 및 권한 관리 방법 연결

하나의 Enum을 사용하여 UserManagement에 사용할 수있는 UserActions를 정의하고 싶습니다.

UserManagement를 단순화하기 위해 데이터베이스 테이블에 사용 권한이 설정된 UserActivities에 여러 UserActions를 래핑하려고합니다.

런타임에는 현재 권한 집합 (UserActivities로 저장 됨)을 유지 관리하는 역할 클래스가 있으며,이 권한은 런타임 중에 변경 될 수 있습니다.

누구나이 CanExecute 메소드를 올바르게 관리하는 방법을 알고 있습니까? 아니면이 주제에 적합한 멋진 패턴이나 프레임 워크가 있습니까?

나는 인터넷에서 이것에 대해 많이 알지 못했습니다.

+0

MVVM Light와 같은 것을 사용하고 있습니까, 아니면 단지 bool CanExecuteXXX 속성을 노출하고 있습니까? –

+0

더 많거나 적은 맞춤 제작 프레임 워크를 사용하고 있습니다. 그것은 나에 의해 설계된 것이 아니므로 나는 가지고있는 것을 고수해야합니다. 커맨드의 canExecute 메소드는 델리게이트를 소비하고 있으며 이제는 권한 부여 관리를 추가하려고합니다. 내 UserActivity 클래스는이 활동이 허용되면 부울 플래그를 노출합니다. – flix

+0

충분히 쉬워야합니다. 당신이 이미 계산 한 것과 그냥 & & 그것. 여기 패턴은 CanExecute 기계와 구현입니다. 최종 bool 계산 방법이 아닙니다. –

답변

1

전체적으로 달성하고자하는 것은 외부화 된 권한 관리입니다. 두 가지 접근 방식을 고려할 수 있습니다.

  1. Microsoft는 클레임 ​​기반 권한 부여를 제공합니다. 온라인 주제에 대한 많은 자습서를 찾을 수 있습니다. 다음은 위대한 article from 2013입니다.
  2. 또한 권한 부여 정책과 권한 정책을 정의하는 정책 언어 인 확장 가능한 액세스 제어 마크 업 언어 인 XACML을 사용하여 권한을 완전히 외부화 (표준화) 할 수 있습니다. 안타깝게도 .NET에는 XACML이 내장되어 있지 않으므로 외부 승인 엔진 (정책 결정 포인트 또는 PDP라고도 함)을 추가해야합니다. Axiomatics 또는 XEngine (sourceforge)에서 사용 가능한 몇 가지가 있습니다.
+0

아주 좋은 접근 방식은 XACML을 몰랐습니다. 내가 이것을 구현할 수 있는지 확인해 보겠다. 고맙습니다 – flix