2013-08-22 2 views
1

저는 C#을 한 달 동안 사용 했으므로이 질문에 '지역성'을 용서해주십시오. 그러나 몇 시간 동안 연구했으며 벽돌 벽에 부딪 혔습니다.WPF 권한 기반 인증

내가 예 왼쪽 IIdentityIPrincipal을 사용하는 WPF 응용 프로그램을위한 역할 기반 권한 부여 바로 보았다.

그러나 더 많은 정보를 찾을 수는 없습니다. 권한 기반 인증 접근 방식으로이 응용 프로그램에는 그룹이 없으며 사용 권한 및 사용자 목록 만 있다고 가정하고 모든 사용자에게 권한을 할당 할 수 있습니다 . , 읽기 전용이 보이지 않는이 축소 (https://uiauth.codeplex.com/ 여기에서 볼 때) 사용 :

  1. 하는 등의 국가들과 사용자 권한에 따라 UI/요소를 제어 할 수 있어야 :

    나는 수 있도록하고 싶습니다

    : 은 (http://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity-based-checks/ 유사) 사용 권한이 필요한 클래스 나 메소드 레벨

대신에 지정할 수

  • 지금

    [PrincipalPermission(SecurityAction.Demand, Permission = "Can add users")] 
    

    내가 ICommand를 사용하고 사용자가이 있는지 문자열 비교를 많이 사용하여 CanExecute 방법으로 인증 로직을두고있다이 작업을 수행하는 방법을 볼 수있는 유일한 방법 :

    내가 좋아하는 뭔가를 원하는 내가 닷컴에 충분하지 만 열거/플래그/비트를 이해 생각

    // Employee class 
    public bool HasRight(SecurityRight right) 
    { 
        return employee.Permissions.Contains(right); 
    } 
    
    // Implementation, check if employee has right to continue 
    if (employee.HasRight(db.SecurityRights.Single(sr => sr.Description == "Can edit users"))) 
    { 
        // Allowed to perform action 
    } 
    else 
    { 
        // User does not have right to continue 
        throw SecurityException; 
    } 
    

    : 필요한 권한과 같은 조치를 요청 수행하려면

    가 나는 경우 ... 구현을 plete :

    EmployeeModel
    EmployeeViewModel

    을 잘 모르겠어요 모두가 함께 모두를 묶어하는 방법을 어디로 .... 여기에 지금 무슨이다 멀리 :

    [Flags] 
        public enum Permissions 
        { 
         None = 0, 
         Create = 1 << 0, 
         Read = 1 << 1, 
         Update = 1 << 2, 
         Delete = 1 << 3, 
    
         User = 1 << 4, 
         Group = 1 << 5 
        } 
    
        public static void testFlag() 
        { 
         Permissions p; 
         var x = p.HasFlag(Permissions.Update) && p.HasFlag(Permissions.User); 
         var desiredPermissions = Permissions.User | Permissions.Read | Permissions.Create; 
         if (x & p == desiredPermissions) 
         { 
          //the user can be created and read by this operator 
         } 
        } 
    
  • 답변

    0

    많은 역할 기반 솔루션이 표시되는 이유는 그것이 장기적으로 훨씬 유지 관리가 쉬운 솔루션이기 때문입니다.

    개인에게 권한을 부여하고 조직의 각 개인을 관리하는 대신 응용 프로그램의 기능 세트에 대해 서로 다른 수준의 권한을 가진 템플릿 (역할)을 설정할 수 있습니다.

    그러면 사용자가 특정 역할을 수행 할 수 있는지 여부 만 볼 수 있습니다.

    내가 원하는대로 직접 질문을하는 데 도움이되지 않는다는 것을 알고 있지만 유사한 솔루션을 사용하는 것이 좋습니다.

    +0

    사용자 X가 그룹 X의 사용자 지정 권한을 갖기를 원할 때마다 새 그룹을 만드는 것보다 짧습니다. 역할 기반은 보스가 원하는 것입니다. –

    +0

    이것은 단 하나의 멤버 만 가진 새로운 그룹이 있음을 의미합니다. 결국 당신은 다른 순열 밖으로 실행됩니다 :) – Killnine