2012-04-23 3 views
1

だから私はthisチュートリアルに続き、私が正常にログインすることができますが、今私は私が試した、ユーザーがグループに属しているかどうかを確認しようとしていた。aspxでAD認証を使用してユーザーのグループを検索するにはどうすればよいですか?

enableSearchMethods="true" 

とともに

if (User.IsInRole("group")) 

を何もうまくいかないようですが、おそらく私は間違った場所を見ています...誰でもヒントはありますか?

答えて

1

.NET 3.5以降の場合は、System.DirectoryServices.AccountManagement(S.DS.AM)名前空間を確認する必要があります。ここではそれについてのすべてを読む:

基本的に、あなたはドメインコンテキストを定義し、簡単にADのユーザーおよび/またはグループを見つけることができます:

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find a user 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); 

if(user != null) 
{ 
    // do something here.... 
    PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups(); 

    // enumerate the groups found - check to find your group in question 
} 

新しいS.DS.AMにより、ADのユーザーやグループで簡単に遊ぶことができます。

また、あなたはまた、ユーザとグループのプリンシパルを見つけることができます。

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find a user 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); 
GroupPrincipal groupToCheck = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere"); 

if(user != null && groupToCheck != null) 
{ 
    // this call will tell you - yes or no - whether that user is member of that group 
    bool isMember = user.IsMemberOf(groupToCheck); 
} 
+0

非常に興味深い、それぞれのユーザ名が、私は簡単にその情報を読み取ることができるとユーザーのWindowsが既にドメインにログインしている場合はどうなりますか? –

+0

@Perro'Xympa'Nascimento:確かに、 'UserPrincipal user = UserPrincipal.Current'を使用して現在のユーザを取得します –

+0

公開すると動作しません。この例外がスローされます: 'System.DirectoryServices.AccountManagement'タイプのオブジェクトをキャストすることができません.GroupPrincipal 'を入力して' System.DirectoryServices.AccountManagement.UserPrincipal 'と入力します。 –

関連する問題