2009-08-24 24 views
1

基本的に私は自分のバージョンの 'RoleProvider'と 'AuthorizeAttribute'を書いています。私はすべての可能な役割のリストを列挙(ビットフィールドなど)を持っている:特定の名前の列挙型で値を取得するにはどうすればよいですか?

​​

私AuthorizeAttributeは、既存のものと同様に動作します。私のロジックでは、それぞれの「認可された」役割を繰り返し、ユーザーがそれに属しているかどうかを確認します。 _rolesSplitは、特定のアクションに対するAuthorizeAttributeで提供されるロールの配列です。 httpContext.Session ["Roles"]は、ユーザーの役割を表す整数です。

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

return false; 

これは私が働いて得ることができない部分です。APICText.Global.Roles [のroleName]。私は.NET開発に慣れていないので、この作業をどうやって行うのか分かりません。私は基本的に役割の名前を渡して関連する価値を取り戻す必要があります。これはどうすればいいですか?

答えて

3

Enum.Parseが必要です。

... ...助けを

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

感謝を

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

またはこれをこのような何かを試してみてください!私はこのコードを動作させることができましたが、私のコードの別のバグが私に今のテストを妨げています。 PHPから来て、強く型付けされたオブジェクト/変数のアイデアはまだまだ私には新しく、使い方を知っていれば大きなメリットがあります。] もう一度感謝します! –

関連する問題