2010-06-13 198 views
0

我試圖瞭解基於角色的安全性,我有以下方法:基於角色的安全

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 
static void Test() 
{ 
    //administratos only can call this code 
} 

我想做的事是,只有那些Windows Administrators組成員的用戶然而,可以調用這個代碼,如果我這樣做,它的工作原理:

GenericIdentity genericIdentity = new GenericIdentity("test", "test"); 
GenericPrincipal genericPrincipal = new GenericPrincipal(genericIdentity, new string[] { "Administrators" }); 
AppDomain.CurrentDomain.SetThreadPrincipal(genericPrincipal); 

Test(); 

所以,我怎樣才能使它只有當用戶以管理員Windows組的工作嗎?

謝謝!

回答

1

您是否設置了PrincipalPolicy?您需要根據Windows組來檢查角色。

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) 
+0

我應該在哪裏添加這行代碼?在我的受保護方法內測試? – 2010-06-13 21:12:19

+0

你可以將它添加到應用程序啓動代碼的某個地方。在嘗試要求安全性之前,您希望設置策略。 – 2010-06-14 03:30:38