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

ASP.NET Forums 2.0 整合既有會員系統實戰:單向同步 Bridge 頁面實作

     編輯:關於ASP.NET

專案需將現有會員系統的註冊、登入、修改密碼操作單向同步至 ASP.NET Forums (ANF) 2.0,盡量不動既有代碼。採用「Bridge 頁面」模式:既有系統完成操作後,以 QueryString 攜帶帳號資訊導向 ANF 專案中的 bridge.aspx 執行對應動作。

Bridge 頁面核心代碼

public partial class Bridge : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string action = Request["action"]; // register, login, changepwd
        string username = Request["username"];
        string password = Request["password"];

        try
        {
            switch (action)
            {
                case "register": Register(username, password); break;
                case "login": Login(username, password); break;
                case "changepwd": ChangePassword(username, password); break;
            }
        }
        catch { /* 靜默失敗,避免干擾主流程 */ }
    }

    private void Register(string username, string password)
    {
        User user = new User { Username = username, Password = password, Email = "anonymous@anonymous.com" };
        user.AccountStatus = UserAccountStatus.Approved;
        user.IsAnonymous = false;
        Users.Create(user, false); // false = 不發送歡迎郵件
    }

    private void Login(string username, string password)
    {
        User user = new User { Username = username, Password = password };
        if (Users.ValidUser(user) == LoginUserStatus.Success)
        {
            // 檢查站點設定是否允許登入、管理員角色等邏輯...
            SetCookie(username, "1"); // 關鍵:寫入 ANF 認證 Cookie
        }
    }

    private void SetCookie(string username, string persist)
    {
        FormsAuthentication.SetAuthCookie(username, persist == "1");
    }
}

關鍵技術點

  • 單向同步:既有系統為主,ANF 為從,避免雙向衝突。
  • 靜默失敗:Bridge 任何異常皆捕獲不拋出,確保主站體驗不受影響。
  • Cookie 同步:FormsAuthentication.SetAuthCookie 寫入 ANF 認證 Ticket,實現免登入跳轉。
  • 最小權限原則:Bridge 頁面僅開放內網存取,或驗證 Referer/Token 防止濫用。

此模式適用於任何需整合第三方 .NET 應用的場景,核心在於「薄介面層 + 既有業務邏輯零侵入」。

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