如何存储到会话中并显示当前用户信息

Posted

技术标签:

【中文标题】如何存储到会话中并显示当前用户信息【英文标题】:how to store into a session and display current users information 【发布时间】:2018-12-15 20:07:01 【问题描述】:
public class UserDA

    private static string _connStr = ConfigurationManager.ConnectionStrings["airmazin"].ConnectionString;

    //update,delete,insert,getuser

    public static void UserInsert(User user)
    

        string queryStr = "INSERT INTO Account (username, gender, email, password) values (@username, @gender, @email, @password);";

        SqlConnection conn = new SqlConnection(_connStr);
        SqlCommand cmd = new SqlCommand(queryStr, conn);
        cmd.Parameters.AddWithValue("@username", user.userName);
        cmd.Parameters.AddWithValue("@gender", user.gender);
        cmd.Parameters.AddWithValue("@email", user.email);
        cmd.Parameters.AddWithValue("@password", user.password);
         
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();

    

    protected void btn_Submit_Click(object sender, EventArgs e)
    

        string userName = tb_userName.Text;
        string gender = rbl_gender.SelectedValue.ToString();
        string email = tb_email.Text;
        string password = tb_password.Text;
        User user = new User(userName, gender, email, password);
        UserDA.UserInsert(user);

    

    protected void Page_Load(object sender, EventArgs e)
    

    

    protected void btn_Login_Click(object sender, EventArgs e)
    
        //if (txt_userEmail == null)  
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["airmazin"].ToString());
        con.Open(); 
        string query = "select count   from Account where email='" + txt_userEmail.Text+ "' and password='" + txt_userPass.Text +"'" ;

       SqlCommand cmd = new SqlCommand(query, con);
        string output = cmd.ExecuteScalar().ToString();
        con.Close();
        if (output == "1")
        
            // Create a session
            Session["Account"] = txt_userEmail.Text;
        
            
            Response.Redirect("User_Profile.aspx");

       

       else
        
            Response.Write("<script>alert('Login NOT successful');</script>");
        
    

    protected void btn_loginSignup_Click(object sender, EventArgs e)
    
        Response.Redirect("SignUp.aspx");
    

我已将数据插入数据库,如何将其存储到会话中并在我的个人资料页面上显示当前用户信息(例如:用户名、电子邮件、性别等)。

【问题讨论】:

不要做select count,因为它会给你记录的数量。获取您需要的实际信息,然后将其存储在会话中。 我使用了 select count * 。我正在获取信息,因为我登录了这就是为什么我必须使用数据库检查用户名和密码@CodingYoshi 使用管理工作室或其他工具运行查询select count * ,看看你得到了什么。 select count * 不起作用,因为它有语法错误。 select count(*) 可以工作,但会返回一个数字。您需要获取用户名、电子邮件、姓名等(无论您需要什么),因此请使用 select username, email... 【参考方案1】:
    您可以通过 访问 aspx 中的会话值

    你应该将SqlConnection包裹在一个using语句中,否则异常时你的连接不会被释放。

    使用 (SqlConnection 连接 = 新的 SqlConnection(connectionString)) //你的代码

【讨论】:

以上是关于如何存储到会话中并显示当前用户信息的主要内容,如果未能解决你的问题,请参考以下文章

使用带护照本地的护照Facebook策略时无法将用户序列化到会话中

Passport.js:无法将用户序列化到会话中(已经添加了序列化代码)?

Laravel:将上传的文件保存到会话中

如何从数据库中选择多个数据并将其分配到会话中?

依托于应用工厂的应用实现的最佳实践

如何使用 jwt 在 React 中正确存储当前用户信息