无需 Windows 身份验证即可获取用户的 Windows 用户名

Mik*_*keP 5 c# asp.net-mvc iis-7 windows-authentication asp.net-authorization

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

有什么办法可以做到这一点吗?谢谢!

小智 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;
    }
}
Run Code Online (Sandbox Code Playgroud)