1

我在我的网站上使用简单的 asp:login 表单进行用户身份验证。我已尽可能将其设置为基本,我的代码如下所示:

<asp:Login ID="LoginForm" runat="server"
    DestinationPageUrl="~/LoggedIn/TaskPanel.aspx" >
</asp:Login>

适当的表在我的 SQL Server 数据库中,登录就像一个魅力:)

登录后,我想检索一些用户数据并将其存储在会话中以供以后使用。为此,我打算通过数据库中的存储过程传递用户名。我尝试了以下方法,但现在当我尝试进行身份验证时,什么也没有发生并且页面刷新。

<asp:Login ID="LoginForm" runat="server"
    DestinationPageUrl="~/LoggedIn/TaskPanel.aspx"
    OnAuthenticate="storeUserDetails" >
</asp:Login>

C#:

protected void storeUserDetails(object sender, EventArgs e)
{
    Session["accountCustUsername"] = LoginForm.UserName;
    ...
    ...
}

我还尝试将 Response.Redirect 放入此方法中,以查看是否发生任何事情,但没有任何反应。

我是否想使用登录模板来获取用户名文本框的 ID?这将如何完成?

4

2 回答 2

1

您可以使用 Membership Api 函数来获取当前登录的用户。

包括这个命名空间

using System.Web.Security;

访问当前用户

MembershipUser currentUser = Membership.GetUser();
string username = currentUser.Username;

或者

string username = HttpContext.User.Identity.Name;
于 2013-01-14T20:58:25.050 回答
1

如果您正确配置了表单身份验证,则可以User.Identity.Name在登录后调用。

Session["accountCustUsername"] = User.Identity.Name;
//if you aren't in your code behind use HttpContext.Current.User.Identity.Name;

但是您确实不需要这样做,因为只要您登录,该值始终可供您使用。

您可以将此代码放在 TaskPanel.aspx 页面的 Page_Load 中(因为我假设那是您登录后到达的页面)

于 2013-01-14T20:25:38.550 回答