2012-06-05 58 views
-2

我們在我們的域www.ourbusiness.com上使用表單驗證(IIS 7和ASP.Net 3.5),並且沒有問題。我們現在希望添加一些額外的ASP.Net服務器,這些服務器將位於略有不同的域上 - newapp.ourbusiness.com - 並且希望這樣的情況是,經過www.ourbusiness.com認證的人員將通過newapp.ourbusiness .COM。在一個Web服務器上驗證的表單,想要在另一個Web服務器上驗證

我已經看到關於如何去做這件事的散佈報告,但任何人都可以提供額外的指導?例如,我的理解是,我們希望所有服務器都使用相同的機器密鑰,以便一個盒子上的驗證cookie對所有其他盒子都有好處,這是我們在www.ourbusiness.com域中已經執行的操作。但我不確定還需要什麼或者是否有文章解釋所涉及的步驟。感謝任何和所有的幫助。

回答

1

您可以自己處理創建FormsAuthenticationTicketHttpCookie。這樣你可以設置cookie的域來處理你的子域。就像你說的那樣,你的服務器也需要有相同的機器密鑰。

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
     username, 
     DateTime.Now, 
     DateTime.Now.AddMinutes(30), 
     isPersistent, 
     userData, 
     FormsAuthentication.FormsCookiePath); 

     // Encrypt the ticket. 
     string encTicket = FormsAuthentication.Encrypt(ticket); 

     // Create the cookie. 
     var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) 
     cookie.Domain = ".ourbusiness.com"; 
     Response.Cookies.Add(cookie);