![](/img/trans.png)
[英]Sitecore 6.6 InvalidOperationException: 'Remember Me' checkbox
[英]Remember me checkbox
我有一个具有用户登录表单的winform
应用程序。 我使用3个参数将用户的登录信息存储在数据库中:用户名,哈希密码,盐:
salt = random string that will be stored in database for every user
hashed password = MD5(MD5(inputPassword) + MD5(salt))
我想在我的登录表单中有一个名为“ Remember me
复选框,即当用户输入正确的信息并进行检查时,下次用户打开程序时,将自动输入其用户信息,用户只需单击login
按钮即可。 。
我无法直接保存输入的密码,下次用它填充密码textBox
,因为我知道有些软件可以像这样读取textBox
并且它不安全。
题:
如何在不保存用户密码的情况下做到这一点?
如果需要保存一些信息,如何对其进行加密?
是否需要更改我的安全策略?
请注意,这是为客户端创建的客户端/服务器应用程序和登录表单。
您可以将密码的哈希值保存在本地数据库中,并且可以有一个隐藏的复选框,它告诉您您已经填充了已经哈希的数据库中的信息,并且在进行身份验证时不需要哈希密码值再次。
编辑如果用户尝试手动输入密码,则可以清除文本框值并更改复选框的选中值,以便您现在知道该值不是哈希值。
据我了解,如果您想remember me
功能,则应该(必须)以任何形式存储密码以验证用户身份。
一种方法是在您的产品中具有2个功能。 一个拥有Hash
,它将存储在数据库中,我想您当前正在使用它。 除此之外,还具有加密/解密功能。 当remember me
的复选框时,只需将加密值保存在您的app.config
文件中即可。 现在,当用户再次打开应用程序时,请检查加密的密码并解密以验证用户身份。
用户dbw
刚刚发布了我的另一种方法:)
希望能帮助到你。
恕我直言,这无法完成。 如果要在数据库中加密/散列/加盐并保存密码,那么您将无法真正以纯文本形式恢复密码。
当然,您可以欺骗用户(我将告诉您如何操作),但是需要定义您希望用户执行的操作:
Windows上有此功能。 DataProtector和ProtectedData类可用于基于计算机信息加密二进制数据。 您可以将加密范围指定为“基于用户”或“基于系统”,这可以派上用场。
如果您认为更好,则只能序列化登录令牌信息,而不能序列化用户凭据。
您只需加密序列化信息并将其存储在所需的任何位置。 并在启动时使用它解密并反序列化。
我想是的,是的。
您可以在此处查看它们:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.