2009-08-24 5 views
1

기본적으로 저는 'RoleProvider'및 'AuthorizeAttribute'의 자체 버전을 작성하고 있습니다. 나는 가능한 모든 역할의 목록 (비트 필드 등) 열거있어 :특정 이름의 열거 형 값을 가져 오는 방법은 무엇입니까?

namespace myProject.Global 
{ 
    [Flags] 
    enum Roles 
    { 
     Viewer = 1, 
     User = 2, 
     Admin = 4, 
     Superadmin = 8 
    } 
} 

내 AuthorizeAttribute은 기존과 유사하게 작동합니다. 내 논리에서 각 '인증 된'역할을 반복하고 사용자가 속한 것인지 확인합니다. _rolesSplit은 특정 작업에 대해 AuthorizeAttribute에 제공된 역할의 배열입니다. httpContext.Session [ "Roles"]은 사용자의 역할을 나타내는 정수입니다. APICText.Global.Roles [roleName] :

foreach (string roleName in _rolesSplit) 
{ 
    if ((httpContext.Session["Roles"] & myProject.Global.Roles[roleName]) == myProject.Global.Roles[roleName]) return true; 
} 

return false; 

내가 작업을 얻을 수없는 부분이다. .NET 개발이 처음이므로이 작업을 수행하는 방법을 잘 모릅니다. 기본적으로 역할 이름을 전달하고 관련 가치를 되 찾을 필요가 있습니다. 어떻게해야합니까?

답변

3

Enum.Parse이 필요합니다. 도움을

이런 식으로 뭔가를 시도 ...

foreach (string roleName in _rolesSplit) 
{ 
    if (httpContext.Session["Roles"] & (Roles)Enum.Parse(typeof(Roles), roleName) == (Roles)Enum.Parse(typeof(Roles), roleName)) return true; 
} 

또는이 ...

foreach (string roleName in _rolesSplit) 
{ 
    Roles role = (Roles)Enum.Parse(typeof(Roles), roleName); 
    if (httpContext.Session["Roles"] & role == role) return true; 
} 
+0

감사합니다! 이 코드를 작동시킬 수 있었지만, 다른 코드가 지금 테스트를 방해하고 있습니다. PHP에서 제공되는 강력한 유형의 객체/변수 아이디어는 여전히 나에게 새롭다. 사용 방법을 알면 큰 장점이있다.] 다시 한 번 감사드립니다. –

관련 문제