目前在做SPA,我想只通过jquery-ajax实现登录。这实际上工作正常,但是当关闭页面然后返回页面时,我从未登录过。
这很明显会发生,因为在提供凭据后,没有重定向,我想避免这种情况。
所以问题是:是否有可能以某种方式使用 jquery 将 cookie 从服务器发送到客户端,然后在浏览器中设置它,这样当用户回来时,他仍然登录?
谢谢
目前在做SPA,我想只通过jquery-ajax实现登录。这实际上工作正常,但是当关闭页面然后返回页面时,我从未登录过。
这很明显会发生,因为在提供凭据后,没有重定向,我想避免这种情况。
所以问题是:是否有可能以某种方式使用 jquery 将 cookie 从服务器发送到客户端,然后在浏览器中设置它,这样当用户回来时,他仍然登录?
谢谢
回答问题。在服务器上,执行以下操作:
FormsAuthentication.SetAuthCookie(account.name, true);
System.Web.HttpCookie authCookie = this.RenewCurrentUser();
private System.Web.HttpCookie RenewCurrentUser()
{
System.Web.HttpCookie authCookie =
System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = null;
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
if (authTicket != null && !authTicket.Expired)
{
FormsAuthenticationTicket newAuthTicket = authTicket;
if (FormsAuthentication.SlidingExpiration)
{
newAuthTicket = FormsAuthentication.RenewTicketIfOld(authTicket);
}
string userData = newAuthTicket.UserData;
string[] roles = userData.Split(',');
System.Web.HttpContext.Current.User =
new System.Security.Principal.GenericPrincipal(new FormsIdentity(newAuthTicket), roles);
}
}
return authCookie;
}
不记得我在哪里找到这个