0

目前在做SPA,我想只通过jquery-ajax实现登录。这实际上工作正常,但是当关闭页面然后返回页面时,我从未登录过。

这很明显会发生,因为在提供凭据后,没有重定向,我想避免这种情况。

所以问题是:是否有可能以某种方式使用 jquery 将 cookie 从服务器发送到客户端,然后在浏览器中设置它,这样当用户回来时,他仍然登录?

谢谢

4

1 回答 1

0

回答问题。在服务器上,执行以下操作:

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

不记得我在哪里找到这个

于 2013-06-25T10:08:12.303 回答