From 99df058a665ea04065a23e729ec79a2f23f79881 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期二, 20 五月 2025 16:59:43 +0800
Subject: [PATCH] 优化
---
WPFProject/Login.xaml.cs | 71 +++++++++++++++++++++++++++++------
1 files changed, 58 insertions(+), 13 deletions(-)
diff --git a/WPFProject/Login.xaml.cs b/WPFProject/Login.xaml.cs
index 4999c8c..3be043e 100644
--- a/WPFProject/Login.xaml.cs
+++ b/WPFProject/Login.xaml.cs
@@ -1,4 +1,5 @@
锘縰sing HMI.Core.Entity;
+using HMI.Core.Setting;
using HMI.Core.Util;
using HMI.UI.DpUtil;
using HMI.UI.Util;
@@ -6,14 +7,17 @@
using Panuon.WPF.UI;
using System;
using System.Data;
+using System.IO;
using System.Threading.Tasks;
using System.Windows;
+using WPFProject.Utils;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace WPFProject
{
public class LoginException : Exception
{
- public LoginException(string message):base(message)
+ public LoginException(string message) : base(message)
{
}
}
@@ -30,6 +34,9 @@
InitializeComponent();
}
+ private static readonly Encryptor encryptor = new Encryptor("aB3dE5fG7hI9jjK1lMnOpQrS2tUvWxYz",
+ "8Wq9RsT4vYx6ZuB1");
+
private void Button_Click(object sender, RoutedEventArgs e)
{
if (FormGroupHelper.ValidateForm(formPanel))
@@ -37,29 +44,22 @@
ButtonHelper.SetIsPending(BtnLogin, true);
string username = TbAccount.Text;
string password = PwdPassword.Password;
+ bool rememberMe = SwRememberMe.IsChecked == true;
Task.Run(() =>
{
- DoLogin(username, password);
+ DoLogin(username, password, rememberMe);
});
}
-
- //try
- //{
-
- //}
- //finally {
- // ButtonHelper.SetIsPending(BtnLogin, false);
- //}
-
}
- private void DoLogin(string username, string password)
+ private void DoLogin(string username, string password, bool rememberMe)
{
SqliteHelper helper = null;
+
try
{
helper = new SqliteHelper(PathHelper.DatabasePath);
- string sql = $"SELECT id,username,name From user WHERE username='{username}' and password='{password}'";
+ string sql = $"SELECT id,code,username,password,name From user WHERE username='{username}' and password='{password}'";
DataTable dt = helper.GetDataTable(sql);
if (dt == null || dt.Rows.Count <= 0)
{
@@ -67,13 +67,26 @@
}
UserInfo user = new UserInfo(
dt.Rows[0]["id"].ToString(),
+ dt.Rows[0]["code"].ToString(),
dt.Rows[0]["username"].ToString(),
dt.Rows[0]["name"].ToString());
UserInfo.Login(user);
+ if (rememberMe)
+ {
+ // 璁颁綇鐧诲綍鎿嶄綔
+ string userToken =
+ JsonUtil.Serialize(
+ new UserInfo(null, user.Code, user.Username, user.Name, dt.Rows[0]["password"].ToString()));
+ // 瀛樺偍鏁版嵁
+ BinUtil.SaveStrToBin(encryptor.Encrypt(userToken),
+ Path.Combine(PathHelper.DatabaseFolder, "user.bin"));
+ }
+
Dispatcher.Invoke(() =>
{
LoadingWindow loading = new LoadingWindow();
loading.Show();
+ this.Closed -= window_Closed;
this.Close();
});
}
@@ -93,5 +106,37 @@
});
}
}
+
+ /// <summary>
+ /// 娓叉煋瀹屾垚鍚庯紝灏濊瘯鑷姩鐧诲綍
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void WindowX_ContentRendered(object sender, EventArgs e)
+ {
+ string userToken = string.Empty;
+ if (BinUtil.LoadStrFromBin(ref userToken, Path.Combine(PathHelper.DatabaseFolder, "user.bin")))
+ {
+ userToken = encryptor.Decrypt(userToken);
+ UserInfo userInfo = JsonUtil.Deserialize<UserInfo>(userToken);
+ TbAccount.Text = userInfo.Username;
+ PwdPassword.Password = userInfo.Password;
+ SwRememberMe.IsChecked = true;
+ Button_Click(null, null);
+ }
+ }
+ private void window_Closed(object sender, EventArgs e)
+ {
+ Application.Current.Shutdown();
+ }
+
+ private void SwRememberMe_Unchecked(object sender, RoutedEventArgs e)
+ {
+ string path = Path.Combine(PathHelper.DatabaseFolder, "user.bin");
+ if (File.Exists(path))
+ {
+ File.Delete(path);
+ }
+ }
}
}
--
Gitblit v1.9.1