c# - 创建登录屏幕,WPF,如何存储用户名和密码

标签 c# wpf authentication

对于我的应用程序,我有一个包含所有设置的部分。可以通过单击设置按钮来访问它。 现在,我想做的是,在弹出设置之前,添加一个小的登录屏幕,这样只有管理员才能更改设置。

起初我想保持简单,只需添加默认用户名“Admin”和密码“AdminPass” 我只是检查用户输入是否与代码中应有的内容相同,如果是女士,它将继续。

但是这样做有一个缺点,用户名和密码是硬编码在内部的,因此不能在应用程序中再更改。 (除非我在设置中执行此操作,但这只是一个可以在应用程序外部读取的 xml,因此不是正确的解决方案)。

所以我想知道,解决这个问题的最佳方法是什么?这样,在第一次使用默认登录后,管理员可以更改管理员密码,并将其保存到应用程序中(从而在应用程序重新启动后保存)。

最佳答案

一种方法是获取密码的哈希值并将其存储在文本文件中。然后当用户输入密码时,对其进行哈希处理。与存储在文本文件中的哈希值匹配。如果匹配,您就可以允许登录。

同样,如果用户决定更改密码,请用新的哈希值替换旧的哈希值

您可以使用此代码对密码进行哈希处理

public static string EncodePassword(string password)
{  byte[] bytes   = Encoding.Unicode.GetBytes(password);
   byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes);
   return Convert.ToBase64String(inArray);
}

您还可以将此信息保存在应用程序配置文件中

关于c# - 创建登录屏幕,WPF,如何存储用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962152/

相关文章:

c# - 问 : How to create a Login using StreamReader in C#

Java EE 身份验证 : how to capture login event?

c# - 业务对象,在线对象和计算器上 - 这是最好的

c# - ZedGraph 条形宽度

c# - 同时使用同一用户控件的多个实例

wpf - 如何防止 WPF 对话框中的键盘事件渗透到调用它的 MFC 应用程序?

c# - HttpClient c# - 在 SendASync 处取消了任务

c# - 无法加载文件或程序集 'System.Spatial' 或其依赖项之一

javascript - 按钮单击事件在弹出窗口中不起作用

ios - 如何使用浏览器重定向创建 Facebook 风格的应用内身份验证?