2017-04-06 9 views
0

を構築する方法に応じて、同じのWindowsPrincipalに異なる結果を返す、私はprincipal.IsInRole()Principal.IsInRoleが、私はそれを構築する方法に応じて、同じのWindowsPrincipalオブジェクトに</p> <p>を構築するには、2つの方法があり、それが

に異なる結果を得ます

は、ここに私のコードです:

var principal1 = new WindowsPrincipal(WindowsIdentity.GetCurrent()); 
var principal2 = new WindowsPrincipal(new WindowsIdentity("myName")); 

principal1.IsInRole("groupName") : returns false 
principal2.IsInRole("groupName") : returns true 

principal1.Identity.Nameprincipal2.Identity.Nameは同じです。

何が起こっているのでしょうか?

+0

このリンクは全く同じ問題を議論しています:http://stackoverflow.com/questions/4563446/whats-the-difference-between-retrieving-windowsprincipal-from-windowsidentity-a –

答えて

0

これらは互いに異なる2つのプリンシパルである。現在のユーザーを選択して新しいユーザーを作成しているためです。あなたが表示されますwindowsidentityから主要なリストを確認する場合は、あなたが作成したことをあなたのprincipal2は新しいし、任意のグループ

var groupNames1 = from id in WindowsIdentity.GetCurrent().Groups 
       select id.Translate(typeof(NTAccount)).Value; 

var groupNames2 = from id in (new WindowsIdentity("myName")).Groups 
       select id.Translate(typeof(NTAccount)).Value; 

が割り当てられていないあなたは、グループのgroupNames1とgroupNames2異なるセットが表示されます。

+0

principal2にはグループがあります。 principal1と同じ番号ですが、異なるグループです。 両方のプリンシパルに同じ名前があるので、同じグループを持つべきではないでしょうか? –

関連する問題