0

我正在使用以下代码来确定用户是否在特定组中。该代码在我的本地开发环境中运行良好,但是当我将其推送到我们的开发服务器时,它一直返回 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
4

1 回答 1

0

请参阅以下页面:http: //msdn.microsoft.com/en-us/library/system.web.httprequest.logonuseridentity.aspx

Request.LogonUserIdentity.Name 公开 Windows.Princpal。在任何情况下,这都需要 1) 启用 Windows 身份验证 2) 启用表单身份验证,并且在这种情况下将有效的域凭据传递给应用程序。

否则,匿名访问会破坏目的,并允许任何没有身份的人进入,从而使您的代码毫无意义。如果您需要识别用户的功能子集,请考虑设置一个虚拟目录 /admin 例如,它可以拥有自己的 web.config 并启用 Windows 身份验证。对于 IIS(在服务器上),IUSR 是在没有其他可用时使用的默认 IIS 帐户,我猜 ABC\John Doe 是您在工作站上的帐户。我还要说,您在本地运行的 IIS 实例未设置为匿名。

于 2013-01-15T23:46:50.693 回答