我需要使用 FormsAuthentication 来验证使用 ajax 的用户的登录,我知道我不能使用 FormsAuthentication.RedirectFromLoginPage("UserName",false) 因为使用 ajax 时没有重定向。
我可以用什么来设置这个用户授权。
尝试使用:
FormsAuthentication.SetAuthCookie("UserName", false);
但是这里有 cookie,我不想使用 cookie。
谢谢
我需要使用 FormsAuthentication 来验证使用 ajax 的用户的登录,我知道我不能使用 FormsAuthentication.RedirectFromLoginPage("UserName",false) 因为使用 ajax 时没有重定向。
我可以用什么来设置这个用户授权。
尝试使用:
FormsAuthentication.SetAuthCookie("UserName", false);
但是这里有 cookie,我不想使用 cookie。
谢谢
您可以将表单身份验证的加密/解密/过期方面与请求/响应周期(例如 cookie)分开使用。
例如:您可以将身份验证令牌作为字符串获取,如下所示:
// create a ticket for "myusername" which expires in 15 minutes
string authToken = FormsAuthentication.Encrypt(new FormsAuthenticationTicket("myusername", false, 15));
然后,当使用通过某种自定义方法从用户那里接收它时(您并没有真正指定要使用什么来代替 cookie),您使用FormsAuthentication.Decrypt来检查它是否有效。请注意,您必须捕获异常并检查 null 以检查有效性。
// decrypt receivedAuthToken string which was received somehow in your request
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(receivedAuthToken);
但是你也必须自己管理更新过程:
var newTicket = FormsAuthentication.RenewTicketIfOld(authTicket);
var newToken = FormsAuthentication.Encrypt(newTicket)