我正在使用以下代码来确定用户是否在特定组中。代码在我的本地开发环境中运行良好,但是当我将它推送到我们的开发服务器时,它始终返回false。
我是否需要在IIS中配置某些内容?
注意:此代码仅在特定页面上运行。它并非全局用于所有网页。
Public Function IsInGroup(ByVal GroupName As String)
Dim MyIdentity As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
Dim MyPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(MyIdentity)
'' Web team needs access to all pages. See web.config for value.
If MyPrincipal.IsInRole(ConfigurationManager.AppSettings("ISSupportAllAccessADGRoup").ToString.ToUpper) Then
Return True
Else
If MyPrincipal.IsInRole(GroupName) Then
Return True
Else
Return False
End If
End If
End Function
答案 0 :(得分:0)
请参阅以下页面: http://msdn.microsoft.com/en-us/library/system.web.httprequest.logonuseridentity.aspx
Request.LogonUserIdentity.Name公开Windows.Princpal。在任何情况下,这都需要 1)启用Windows身份验证 2)在这种情况下,启用了表单身份验证,并将有效的域凭据传递给应用程序。
否则匿名访问会失去目的,并允许任何人在没有IDENTITY的情况下使您的代码变得毫无意义。如果有一部分函数需要识别用户考虑设置虚拟目录/ admin,例如可以拥有自己的web.config并启用了Windows身份验证。对于IIS(在服务器上),IUSR是默认的IIS帐户,当没有其他可用的时候使用,我认为ABC \ John Doe是您工作站上的帐户。我还要说你在本地运行的IIS实例没有设置为匿名。