我正在使用System.Security.Principal.WindowsIdentity.GetCurrent().Name
(在我的web.config中使用Windows身份验证)来获取客户端用户名。
我的问题是,当我将页面放到Intranet上时,此代码是否有效,因为我需要在会话中存储用户名以供以后使用。
我是否可以使用此代码获取用户用于登录我页面的用户名?
void Authenticate()
{
string strLogin = null;
try
{
strLogin = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Session.Add("Login", strLogin);
//Label1.Text = strLogin;
//Label2.Text = System.Environment.UserName;
}
catch (Exception ex)
{
Response.Write(strLogin);
Response.Write("<br/>handled:" + ex.Message.ToString());
Response.End();
}
finally
{
GC.Collect();
}
}
答案 0 :(得分:4)
您需要将应用程序配置为通过在Web.Config中的身份验证元素之后添加以下元素来模拟正在访问它的Windows用户:
<identity impersonate="true"/>
如果未将impersonate设置为true,则工作进程将作为网络服务或ASPNET帐户运行,具体取决于您的IIS版本。
答案 1 :(得分:1)
是。它也适用于Page.User.Identity.Name
答案 2 :(得分:0)
如果您的用户登录您的网站,您可以使用Page.User.Identity.Name获取当前用户的名称。