2011-12-04 4 views
6

내가 올바른 구현하는 방법과 코드를 사용하여 다음 종로 패턴, 또는 좋은 객체 지향 솔루션을 알아 내려고 노력하고있어 권한의 집합을 구현하는 변수의 허가 집합을 포함 할 수 있으며, 각각은 응용 프로그램에서 다른 동작을 수행 할 수 있습니다. 이 아이디어는 특정 사용자 개체에게 명령을 삭제하는 것과 같은 명령을 내릴 수있게하는 허가를 가진 경우 명령을 내릴 수 있도록하는 것입니다.디자인 패턴은 사용자

누군가이 장소에 대해 읽어야 할 곳이 있다면 도움이됩니다. 감사합니다

답변

0

한 명의 사용자가 여러 허가를 가질 수 있다면 각 허가마다 다른 실행 작업이 허용되므로 데코레이터 패턴을보고 싶을 수 있습니다.

비록 귀하의 요구 사항에 많이 달려 있습니다.

5

C#/.NET에는 권한 기능이 내장되어 있습니다.

함수에 대한 액세스 요구 사항은 PrincipalPermissionAttribute 클래스 또는 PrincipalPermission 코드를 통해 설정됩니다. 호출 스레드의 현재 ID에 대한

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 
static void CheckAdministrator() 
{ 
    Console.WriteLine("User is an administrator"); 
} 

이러한 검사 모두 : 현재 사용자가 Administrators 역할의 구성원이 아닌 불리는되는 방법을 방지하기 위해, 다음과 같은 속성은 (MSDN에서 샘플)가 사용됩니다. 따라서 사용자가 스레드 ID로 설정할 수 있도록 IPrincipal 인터페이스를 구현해야합니다. 그런 다음 표준 .NET PrincipalPermission을 사용하여 보안을 확인할 수 있습니다. 보안 요구 사항이 충족되지 않으면 예외가 발생합니다.

+0

필자는 이러한 유형의 Principle-Centric 접근 방식을 선호하는데, 한 단계 더 나아가서 PrinciplePermission 어설 션을 캡슐화하기 위해 선언적 및/또는 필수적 권한 개체를 만드는 것이 좋습니다. 이렇게하면 기본 세부 사항이 코드베이스의 나머지 부분으로 누출되지 않습니다. 이 패턴을 사용하려면 더 큰 CAS 인프라를 구매할 필요가 없습니다. 한가지주의 할 점은 WCF 보안 모델은 매우 다르므로 무시한다면 어디로 가는지. 다음은 패턴의 샘플입니다. http://www.smelser.net/blog/post/2009/03/09/Why-do-I-need-your-Permission.aspx – JoeGeeky

+0

@JoeGeeky 그게 내가 찾고있는 것 같지만 어떻게해야합니까? 나는 사용자의 허가를 설정 했습니까? 또한 이러한 사용자와 사용자 그룹은 Windows UAC 사용자/사용자 그룹과 아무런 관련이 없습니까? – mbmihura

관련 문제