0

我需要使用 FormsAuthentication 来验证使用 ajax 的用户的登录,我知道我不能使用 FormsAuthentication.RedirectFromLoginPage("UserName",false) 因为使用 ajax 时没有重定向。
我可以用什么来设置这个用户授权。
尝试使用:

FormsAuthentication.SetAuthCookie("UserName", false);

但是这里有 cookie,我不想使用 cookie。

谢谢

4

1 回答 1

0

您可以将表单身份验证的加密/解密/过期方面与请求/响应周期(例如 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)
于 2012-10-24T14:29:30.980 回答