1

在使用表单身份验证时,我很难理解如何访问特定的用户数据。

我已经为用户和管理员设置了表单身份验证。

当用户尝试登录时,运行代码如下:

    protected void buttonLogIn_Click(object sender, EventArgs e)
    {
        string email = TextBoxEmail.Text.Trim();
        string password = TextBoxPassword.Text.Trim();
        UserType userType = UserType.User; //temporary value
        string firstName = string.Empty;
        string lastName = string.Empty;
        bool success = DBAppLayer.AuthenticateLogIn(email, password, out userType, out firstName, out lastName);
        if (success == true)
        {
            Session.Add("email", email);
            Session.Add("firstname", firstName);
            Session.Add("lastname", lastName);

            switch (userType)
            {
                case DBDataLayer.UserType.User:
                    FormsAuthenticationUtil.SetAuthCookie(email, "User,", false);
                    Response.Redirect("~/User/UserDashboard.aspx", false);
                    break;
                case DBDataLayer.UserType.Admin:
                    FormsAuthenticationUtil.SetAuthCookie(email, "Admin", false);
                    Response.Redirect("~/AdminArea/AdminDashboard.aspx", false);
                    break;
            }
        }
        else
        {
             labelError.Text = "Bad username/password.";
        }
    }

这成功地将用户重定向到他们的仪表板。现在当用户在 /User/UserDashboard.aspx 中时,我想显示存储在数据库中的用户个人资料信息,例如用户的工作和年龄。

问题是,我不确定如何在 UserDashboard.cs 中访问此特定用户的数据。我需要创建身份验证票吗?如果是这样,我会在登录页面中执行此操作吗?

任何链接或建议将不胜感激。

4

1 回答 1

0

当您创建身份验证 cookie 时,您的调用似乎作为用户 IDFormsAuthenticationUtil.SetAuthCookie传入。email在您的用户仪表板页面中,该User.Identity.Name字段将为您返回相同的电子邮件地址。使用该值调用您的数据库并获取用户的个人资料。

您还将电子邮件地址存储在其中,Session以便您也可以从那里获取它。

于 2013-04-10T22:25:00.667 回答