0

次のコードを使用して、ユーザーが特定のグループに属しているかどうかを判断しています。コードはローカルの開発環境では問題なく動作しますが、開発サーバーにプッシュすると、常に false が返されます。

IIS で構成する必要があるものはありますか?

注: このコードは特定のページでのみ実行されています。すべての Web ページでグローバルに使用されるわけではありません。

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) フォーム認証が有効で、その場合は有効なドメイン資格情報がアプリケーションに渡される必要があります。

それ以外の場合、匿名アクセスでは目的が無効になり、IDENTITY のない人がコードを無意味にレンダリングできるようになります。ユーザーを識別するために必要な機能のサブセットがある場合は、たとえば、Windows 認証が有効になっている独自の web.config を持つことができる仮想ディレクトリ /admin を設定することを検討してください。IIS (サーバー上) の場合、他に何も利用できない場合に使用されるデフォルトの IIS アカウントは IUSR であり、ABC\John Doe がワークステーション上のアカウントであると推測しています。さらに、ローカルで実行している IIS インスタンスは匿名に設定されていません。

于 2013-01-15T23:46:50.693 に答える