4

我们有一个面向内部的 (C#/MVC/IIS7) 应用程序,要求用户不必输入凭据,但我们需要网络/Windows 用户名来识别当前用户是谁。

有没有办法做到这一点?谢谢!

4

2 回答 2

2

这是一些处理这种事情的代码:

public class WindowsIdentityHelper
{
    public WindowsPrincipal GetWindowsPrincipal()
    {
        //Get Current AppDomain
        AppDomain myDomain = Thread.GetDomain();
        myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        return (WindowsPrincipal)Thread.CurrentPrincipal;
    }

    public bool IsUserBelongsToWindowsAdministratorGroup()
    {
        WindowsPrincipal myPrincipal = GetWindowsPrincipal();

        if (myPrincipal.IsInRole("Administrators"))
            return true;

        if (myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
            return true;
        else
            return false;
    }

    public string GetFullDomainLoginUserName()
    {
        WindowsPrincipal myPrincipal = GetWindowsPrincipal();
        return myPrincipal.Identity.Name.ToString();
    }

    public string GetLoginUserName()
    {
        string authenticatedUser = string.Empty;
        string userName = GetFullDomainLoginUserName();
        if (userName.Contains("\\"))
            authenticatedUser = userName.Split('\\')[1];
        else
            authenticatedUser = userName;
        return authenticatedUser;
    }
}
于 2015-08-27T20:48:33.420 回答
2

这对我有用(ASP.NET C#):

string username = Request.LogonUserIdentity.Name;
于 2018-10-16T13:07:56.197 回答