获取经过身份验证的用户(不是计算机名)的信息

时间:2012-04-03 23:43:45

标签: c# asp.net authentication

我有一个登录页面,它调用以下事件处理程序:

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">再次出现问题。在我添加此行之后,在我的HomePage中,IDE向我发出警告,指出以<% Page ... %>开头的第一行会出现运行时错误。

我使用HttpContext.Current.User.Identity.Name,也不起作用。 我只是想在项目的不同部分获得经过身份验证的用户的名称。所以,如果必须,我可以改变逻辑。 任何帮助将不胜感激。

编辑:我在Windows 7(64位)上使用Visual Web Devepoler 2008 Express。

EDIT2:问题已解决。答案如下。怎么样?为什么?不能以程序方式完成吗?我不知道,我想知道为什么。

1 个答案:

答案 0 :(得分:0)

以下是我找到的解决方案:首先,我删除了web.config文件中的授权标记。然后在解决方案资源管理器窗口中,我单击了Properties图标,并打开了ASP.NET的配置网页。然后我点击了Security tab->Set up authentication。我选择了使用Internet连接的选项,现在我可以通过Page.User.Identity.Name随处获得经过身份验证的用户名。