專案需將現有會員系統的註冊、登入、修改密碼操作單向同步至 ASP.NET Forums (ANF) 2.0,盡量不動既有代碼。採用「Bridge 頁面」模式:既有系統完成操作後,以 QueryString 攜帶帳號資訊導向 ANF 專案中的 bridge.aspx 執行對應動作。
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");
}
}
FormsAuthentication.SetAuthCookie 寫入 ANF 認證 Ticket,實現免登入跳轉。此模式適用於任何需整合第三方 .NET 應用的場景,核心在於「薄介面層 + 既有業務邏輯零侵入」。