我有一个登录页面,它调用以下事件处理程序:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (Login1.UserName == "abc" && Login1.Password == "1234"){
if (Request["ReturnUrl"] != null)
{
FormsAuthentication.SetAuthCookie(userName, false, "AdminPart/AdminHome.aspx");
FormsAuthentication.RedirectFromLoginPage(userName, Login1.RememberMeSet);
}
else
{
FormsAuthentication.SetAuthCookie(userName, false, "AdminPart/AdminHome.aspx");
Response.Redirect("HomePage.aspx");
}
}
}
我的web.config文件是这样的:
<system.web>
<authorization>
<deny users="?" />
</authorization>
现在,我正在尝试在HomePage.aspx.cs中获取经过身份验证的用户的用户名,但是
User.Identity.Name
返回计算机的名称。我试图将以下代码添加到配置文件:<authentication mode="Forms">
<forms loginUrl="~/login.aspx" timeout="10" protection="All"></forms>
</authentication>
但是行
<authentication mode="Forms">
再次出现问题。在我添加此行之后,在我的主页中,IDE对以<% Page ... %>
开头的第一行警告我说将出现运行时错误。我使用了
HttpContext.Current.User.Identity.Name
,也无法正常工作。我只是想在项目的不同部分中获取经过身份验证的用户的名称。因此,如果需要,我可以更改逻辑。
任何帮助将不胜感激。
编辑:我在Windows 7(64位)上使用Visual Web Devepoler 2008 Express。
EDIT2:问题以某种方式解决。答案如下。怎么样?为什么?不能以编程方式完成吗?我不知道,我想知道为什么。
最佳答案
这是我找到的解决方案:首先,我删除了web.config
文件中的授权标签。然后在解决方案资源管理器窗口中,单击Properties
图标,然后打开ASP.NET的配置网页。然后,单击Security tab->Set up authentication
。我选择了Internet连接选项,现在我可以在任何地方通过Page.User.Identity.Name
到达经过身份验证的用户名。
关于c# - 获取经过身份验证的用户的信息(不是计算机名),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10003052/