2012-01-26 11 views
1

プログラムで、私は彼らがこのような特定の役割であるかどうかに基づいて、Windowsユーザーを認証することができます:私が行う方法を見つけ出すことはできませんどのようなWindowsユーザーを一連のユーザーに対してプログラム的に承認しますか?

if(!User.Identity.IsAuthenticated) 
    return false; 

var isAuthroized = User.IsInRole(@"DOMAIN\Some Role"); 

// ... 

return isAuthorized; 

、場合、ユーザーの名前と一致する方法でありますたとえば、個々のユーザーのリストにはアクセス権が与えられます。

ですから、通常のAuthorizeAttributeを使用してしまうようにあなたは、許可されたユーザの指定した文字列に対してユーザーを認証しようとしていると想像:

[Authorize(Users = @"DOMAIN\User1, DOMAIN\User2, DOMAIN\User3")] 
public ActionResult SomeAction(){ ... } 

どのようにプログラムで、ユーザーのその文字列に対してユーザーを認証しますか?

@"DOMAIN\User1, DOMAIN\User2, DOMAIN\User3" 

EDIT: [OK]を、これが混乱の私のポイントです:次のように(通常AuthorizeAttributeで)宣言を持っている場合は、複数のユーザを指定のポイントは何ですか:

[Authorize([email protected]"User1,User2,User3", [email protected]"SomeRole"] 

// I can do this: 

User.IsInRole(roles); 

// But what's the equivalent for the specified users? 

User.Identity.Name.IsInNames(names); // <-- How is the done programmatically? 

私はおそらくここのマークから外れていて、情報の一部が欠落しています。私を教えてください!

編集2:MVCソースは、私のためにこれをいくつか解明しました。ユーザーの存在をテストすることは、このコレクション型の非常に高速な操作であるように私は、HashSetのを使用することになり

if (_usersSplit.Length > 0 && 
    !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase)) { 
    return false; 
} 
+3

のようなユーザーは、この*は*役割を定義していませんか? –

+0

"一連のユーザーに対してユーザーを認証しますか?"理解できません。 – capdragon

+1

ユーザーの一覧をカプセル化する独自の役割(ユーザーに役割を注入する必要があります)と管理UIを提供します。 –

答えて

0

:それは確かに下の回答の1で提案されたものと類似して行われます。

まず、文字列を分割し、それをHashSetに追加します。

string[] splittedUsers = usersString.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries); 
var users = new HashSet<string>(splittedUsers); 

テストこの

string user = "xy"; 
if (users.Contains(user)) { 
    // Do something with user 
} 
関連する問題