use*_*275 1 authentication wpf
如何为WPF应用程序创建简单的WPF身份验证?例如:用户首次注册然后登录.用户登录名和密码应保存为txt文件(加密).如果身份验证过程成功,那么它应该重定向到另一个现有窗口.
我是WPF的初学者.我搜索过这个问题,但没找到我需要的东西.我需要一个简单的,一步一步解释如何做到这一点.
提前致谢!:)
Arc*_*ald 19
我也在学习,为了锻炼一下,我为你创造了一个非常简单的例子.这可能是不专业和不安全的,但我认为(希望)有可能以某种方式扩展它:).
首先,您需要创建简单的WPF窗口(使用txt/btn +名称命名约定):

对于两个窗口添加
using System.IO;
Run Code Online (Sandbox Code Playgroud)
然后,您需要为按钮添加事件并修改两个窗口的代码:
public partial class LoginWindow : Window
{
public LoginWindow()
{
InitializeComponent();
}
// This is really bad/weak encryption method
String WeakDecryptMethod(String textIn)
{
Char[] temp = textIn.ToArray<Char>();
for (int i = 0; i < textIn.Length; i++)
{
temp[i] = (char)((int)temp[i] - 3);
}
return new String(temp);
}
private void btnRegister_Click(object sender, RoutedEventArgs e)
{
RegisterWindow newWindow = new RegisterWindow();
newWindow.ShowDialog();
}
private void btnOK_Click(object sender, RoutedEventArgs e)
{
// If file exist and login and password are "correct"
if (File.Exists("Users.txt")
&& txtLogin.Text.Length >= 4
&& txtPass.Text.Length >= 4)
{
using (StreamReader streamReader = new StreamReader("Users.txt"))
{
// While there is something in streamReader read it
while (streamReader.Peek() >= 0)
{
String decryptedLogin = WeakDecryptMethod(streamReader.ReadLine());
String decryptedPass = WeakDecryptMethod(streamReader.ReadLine());
if (decryptedLogin == txtLogin.Text && decryptedPass == txtPass.Text)
{
ProtectedWindow protectedWindow = new ProtectedWindow();
this.Close();
protectedWindow.Show();
break;
}
}
}
}
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
和注册窗口的代码:
public partial class RegisterWindow : Window
{
public RegisterWindow()
{
InitializeComponent();
}
// This is really bad/weak method to encrypt files
String WeakEncryptMethod(String textIn)
{
Char[] temp = textIn.ToArray<Char>();
for (int i = 0; i < textIn.Length; i++)
{
temp[i] = (char)((int)temp[i] + 3);
}
return new String(temp);
}
private void btnRegister_Click(object sender, RoutedEventArgs e)
{
// If file exist and login and password are "correct"
if (File.Exists("Users.txt")
&& txtLogin.Text.Length >= 4
&& txtPass.Text.Length >= 4
&& txtPass.Text == txtPassCheck.Text)
{
StringBuilder stringBuilder = new StringBuilder();
using (StreamReader streamReader = new StreamReader("Users.txt"))
{
stringBuilder.Append(streamReader.ReadToEnd());
}
using (StreamWriter streamWriter = new StreamWriter("Users.txt"))
{
streamWriter.Write(stringBuilder.ToString());
streamWriter.WriteLine(WeakEncryptMethod(txtLogin.Text));
streamWriter.WriteLine(WeakEncryptMethod(txtPass.Text));
}
this.Close();
}
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
为了工作应用程序需要访问文件"Users.txt",它需要放在同一个文件夹中.
笔记:
| 归档时间: |
|
| 查看次数: |
7413 次 |
| 最近记录: |