首页 > 解决方案 > 如何在浏览表单时始终显示 db 的价值

问题描述

var query = db.Users.Where(x => x.UserName == username.Text && x.PassWord == password.Text)
                    .FirstOrDefault();

if (query != null)
{
    MessageBox.Show("sign in successful", "success", MessageBoxButtons.OK, MessageBoxIcon.Information);

    HomeScreen hs = new HomeScreen();

    hs.labelControl1.Text = query.UserName;
    hs.pictureEdit1.EditValue = query.Image;

    this.Hide();
    hs.Show();
}

我正在做的是在主屏幕表单中显示用户名,但是当我转到另一个表单并返回主屏幕表单时,它不显示用户名。我想要做/显示的是用户名,无论我去另一个表格,然后再回到主屏幕。这怎么可能?

标签: c#winformsentity-frameworklinq-to-entities

解决方案


以快速和肮脏为出发点?如果需要,请使用 UserName 和图像创建一个简单的可序列化 UserInfo 类:

[Serializable]
public class UserInfo
{
    public string UserName {get; set;}
}

然后登录成功

Session["UserInfo"] = new UserInfo { UserName = query.UserName };

在其他页面上:

var userInfo = Session["UserInfo"];
if (userInfo == null)
   // Redirect back to your login, the session timed out.

通常,您将希望将其绑定以补充您的站点身份验证以断言当前登录的身份。

除此之外,永远不要在数据库中以纯文本形式存储密码。生成一个哈希值以存储在数据库中,然后当用户使用密码登录时,对该值进行哈希处理并比较哈希值。

C# 中的哈希和盐密码


推荐阅读