在.net中自动分配身份验证令牌

本文关键字:分配 身份验证 令牌 net | 更新日期: 2023-09-27 17:49:36

我已经实现了表单认证与。net会员提供程序,但我也希望用户能够登录与Facebook。使用Facebook进行身份验证后,我想自动为用户分配一个。net身份验证令牌。我有一个正在检测FB身份验证的HttpModule,但我手动生成身份验证令牌的所有尝试都出现了不足。

我试着

  • FormsAuthentication.SetAuthCookie
  • FormsAuthentication.GetAuthCookie + Response.Cookies.Add
  • new FormsAuthenticationTicket(...) a la MSDN
  • HttpModule vs Page

加上其他一些不顾一切的尝试。似乎什么都不管用。这是如何做到的呢?

在.net中自动分配身份验证令牌

建议使用WIF

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);

在你SetCookieAuth之后,你需要做一个重定向给HttpModule一个机会来触发和设置HttpContext.User属性。

原来有人在解决方案中注册了另一个模块,该模块干扰了HttpRequest和身份验证部分。在我去掉它之后,FormsAuthentication.SetAuthCookie(...)工作得很好。

谢谢大家的帮助。