在asp.net Web应用程序中获取当前登录用户

时间:2015-12-27 15:33:21

标签: c# asp.net web-applications windows-authentication

我有一个Web应用程序,根据this文章对使用AD的用户进行身份验证。 如果因为代码正在运行某些需要service_user权限的文件而被禁用模拟。 但是,我的代码的某些部分是出于安全目的而需要当前经过身份验证的用户的用户名(检查他是否属于某个AD组)或只是向他发送电子邮件。

我试过了:

  1. HttpContext.User Property。
  2. WindowsIdentity.GetCurrent Method。
  3. 他们似乎返回了应用程序池用户,而不是登录用户。

    有没有办法可以获取当前会话登录的用户名?

    最佳, 希蒙。

1 个答案:

答案 0 :(得分:0)

为应用程序会话创建一个类。

public class AppSession
{
public static string UserName
    {
        set
        {
            HttpContext.Current.Session["UserName"] = value;
        }
        get
        {
            if (HttpContext.Current.Session["UserName"] != null)
            {
                return HttpContext.Current.Session["UserName"].ToString();
            }
            else
                return null;
        }
    }
}

在您的Login.aspx页面

 protected void btnSignIn_Click(object sender, EventArgs e)
    {
        string userName = txtUserName.Text.Trim();
        string password = txtPassword.Text.Trim();

        if (Membership.ValidateUser(userName, password))
        {
            Profile userInfo = dc.Profile.Where(s => s.UserName == userName).SingleOrDefault();
           AppSession.UserName = userInfo.UserName;
        }
   }

现在您可以访问当前登录用户的UserName。