单页面应用:无需重定向即可设置身份验证Cookie

时间:2013-04-26 13:24:16

标签: jquery authentication redirect cookies

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

这显然是因为在提供凭据后,没有重定向,我想避免。

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

由于

1 个答案:

答案 0 :(得分: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;
    }

不记得我在哪里找到了这个