首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 登錄界面「記住密碼」實現:配置文件持久化方案

     編輯:程式設計綜合問答

核心思路

首次登錄成功後,將用戶名/密碼加密寫入配置文件(INI/註冊表/JSON);啟動時讀取並填充界面,勾選「記住密碼」複選框。

具體步驟

  1. 定義結構:
    struct LoginInfo { CString user; CString pwd; BOOL remember; };
  2. 寫入(登錄成功時):
    if (checkRemember.GetCheck()) {
        CString encPwd = Encrypt(pwd); // 簡單 Base64 或 AES
        WritePrivateProfileString(_T("Login"), _T("User"), user, iniPath);
        WritePrivateProfileString(_T("Login"), _T("Pwd"), encPwd, iniPath);
        WritePrivateProfileString(_T("Login"), _T("Remember"), _T("1"), iniPath);
    } else {
        WritePrivateProfileString(_T("Login"), _T("Remember"), _T("0"), iniPath);
    }
  3. 讀取(對話框 OnInitDialog):
    CString user = GetPrivateProfileString(_T("Login"), _T("User"), _T(""), iniPath);
    CString encPwd = GetPrivateProfileString(_T("Login"), _T("Pwd"), _T(""), iniPath);
    CString rem = GetPrivateProfileString(_T("Login"), _T("Remember"), _T("0"), iniPath);
    if (rem == _T("1")) {
        editUser.SetWindowText(user);
        editPwd.SetWindowText(Decrypt(encPwd));
        checkRemember.SetCheck(TRUE);
    }

安全建議

  • 密碼不可明文存儲,至少 Base64,推薦 DPAPI (CryptProtectData) 或 AES-256-GCM。
  • 配置文件放在 CSIDL_LOCAL_APPDATA 目錄,避免權限問題。
  • 提供「忘記密碼/清除記憶」功能,刪除對應鍵值。

替代方案

  • 註冊表:HKEY_CURRENT_USER\Software\YourApp\Login,無需文件路徑管理。
  • JSON + CFile/CStdioFile,結構擴展性更好。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved