0

我已經使用.NET成員資格提供程序實現了表單身份驗證,但我也希望用戶能夠使用Facebook登錄。使用Facebook進行身份驗證後,我想自動爲用戶分配.NET身份驗證令牌。我有一個HttpModule正在檢測FB身份驗證,但我所有嘗試手動生成身份驗證令牌的時間都很短。在.NET中自動分配身份驗證令牌

我試圖

  • FormsAuthentication.SetAuthCookie
  • FormsAuthentication.GetAuthCookie + Response.Cookies.Add
  • new FormsAuthenticationTicket(...)一拉MSDN
  • HttpModule VS Page

加上其他一些絕望的嘗試。似乎沒有任何工作。這是如何完成的?之後你SetCookieAuth你需要做的重定向給予的HttpModule有機會火,並設置HttpContext.User屬性

回答

0

事實證明,有人在解決方案中註冊了另一個模塊,該模塊正在干擾HttpRequest和身份驗證部分。我擺脫之後,FormsAuthentication.SetAuthCookie(...)工作正常。

謝謝大家的幫助。

1

擬議的方法是使用WIF

+0

謝謝。生病檢查出來。 – Jeff 2011-04-11 14:38:26

+0

WIF分離身份的來源和消費者,並提供簡單的API來創建來自任何來源的用戶令牌。 – gandjustas 2011-04-11 14:42:05

+0

聽起來非常強大,適當和複雜:/你有什麼WIF體驗?很容易插入並開始使用? – Jeff 2011-04-11 16:06:32

1
FormsAuthentication.Initialize(); 
// Create a new ticket used for authentication 
FormsAuthentication.SetAuthCookie(UserName.Text, false); 
// Create a new ticket used for authentication 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1, // Ticket version 
    UserName.Text, // Username associated with ticket 
    DateTime.Now, // Date/time issued 
    DateTime.Now.AddMinutes(30), // Date/time to expire 
    false, // "true" for a persistent user cookie 
    "Admin", // User-data, in this case the roles 
    FormsAuthentication.FormsCookiePath);// Path cookie valid for 

// Encrypt the cookie using the machine key for secure transport 
string hash = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(
    FormsAuthentication.FormsCookieName, // Name of auth cookie 
    hash); // Hashed ticket 

// Set the cookie's expiration time to the tickets expiration time 
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration; 

// Add the cookie to the list for outgoing response 
Response.Cookies.Add(cookie); 
+0

我已經試過這個,它似乎沒有工作。使用這種方法將請求'Request.IsAuthenticated == true'? – Jeff 2011-04-11 14:53:38

1