//dto =》json =》票据 =>票据加密=》cookie

151 阅读1分钟
        //dto  =》json  =》票据 =>票据加密=》cookie
        //1、将LoginAdminDTO序列化,方便存入票据(Service也需要添加json引用,以及版本一致)
        var json = admin.ToJson();
        //2、创建票据FormsAuthenticationTicket
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, "loginUser", DateTime.Now, DateTime.Now.AddDays(7), false, json);
        //3、对票据加密FormsAuthentication.Encrypt(ticket)
        var encrypt = FormsAuthentication.Encrypt(ticket);
        //4、将加密后票据存入cookie( HttpCookie )
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypt);
        //5、若用户勾选记得我,则指定cookie有效期( Expires )
        if (login.IsRemeberMe)
        {
            cookie.Expires = DateTime.Now.AddDays(7);
        }
        //6、将cookie写入响应流中发送客户端(获取http请求上下文HttpContext ,移除原来的数据,存入新的)
        HttpContext context = HttpContext.Current;
        context.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
        context.Response.Cookies.Add(cookie);

        return AjaxResult<bool>.Success(true);