2010-06-13 203 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