首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 實作帳號記憶與自動登入功能

     編輯:關於ASP.NET

常見的「記住我」功能,透過 HttpCookie 將加密後的帳號密碼存儲於客戶端,下次訪問時自動驗證登入。核心在於:Cookie 存儲密文,自動登入時直接比對密文,避免解密風險。

Cookie 封裝方法

/// 
/// 建立登入 Cookie,有效期 14 天
/// 
public HttpCookie HttpSaveCookie(string name, string pass) {
    HttpCookie htc = new HttpCookie("userlogin");
    htc.Values.Add("username", name);           // 明文帳號(或加密)
    htc.Values.Add("userpass", pass);           // 必須為密文(MD5/SHA256 等)
    htc.Expires = DateTime.Now.AddDays(14);
    return htc;
}

登入時寫入 Cookie

// 使用者勾選「記住我」
if (CheckBox2.Checked) {
    Response.Cookies.Add(HttpSaveCookie(strName, strPass)); // strPass 必為加密後字串
}

頁面載入時自動登入檢查

if (Request.Cookies["userlogin"] != null) {
    HttpCookie htc = Request.Cookies["userlogin"];
    string getName = htc.Values["username"].ToString();
    string getPass = htc.Values["userpass"].ToString(); // 直接取得密文
    
    // 直接以密文比對,不解密
    bool isValid = SProcedure.UserLogin(getName, getPass);
    if (isValid) {
        // 設定驗證票據、Session、重導向等
    }
}

安全性關鍵點

  1. 密碼加密儲存:Cookie 僅存雜湊值,即使竊取也無法還原明文
  2. 傳輸加密:生產環境必須啟用 HTTPS,防止 Cookie 被竊聽
  3. HttpOnly 標記:htc.HttpOnly = true 防止 XSS 攻擊竊取 Cookie
  4. Secure 標記:htc.Secure = true 僅 HTTPS 傳輸

此模式簡單有效,適合中小型系統;大型系統建議採用 Token 機制(JWT/OAuth)實現更安全的記憶登入。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved