表单身份验证 - 访问用户数据

时间:2013-04-10 22:18:57

标签: c# asp.net forms-authentication

我在使用表单身份验证时理解如何访问特定用户数据时遇到了一些困难。

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

当用户尝试登录时,以下是运行的代码:

    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中访问此特定用户的数据。我是否需要创建身份验证故障单?如果是这样,我会在登录页面中这样做吗?

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

1 个答案:

答案 0 :(得分:0)

当您创建身份验证Cookie时,FormsAuthenticationUtil.SetAuthCookieemail的呼叫似乎是用户ID。在您的用户信息中心页面中,User.Identity.Name字段会返回相同的电子邮件地址。使用该值调用数据库并获取用户的个人资料。

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