在.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
vsPage
加上其他一些不顾一切的尝试。似乎什么都不管用。这是如何做到的呢?
建议使用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(...)
工作得很好。
谢谢大家的帮助。