我正在使用 cookie 来避免 rpc 调用我第一次使用 cookie 进行用户身份验证(当他登录时)。为此,我无法将 servlet 中的用户对象设置为 cookie。因为 cookie 构造函数仅允许字符串为价值 。
如何将对象设置为 cookie?除了 cookie 之外,还有什么方法可以在不进行 RPC 调用的情况下从 HTTP 会话中获取对象?
我假设您有一些系统可以将对象与 JSON 相互转换。因此,只需将对象转换为 JSON 字符串,将其保存到 cookie,然后在从 cookie 中提取对象时将其转换回对象。我推荐处理 JSON 的 piriti 库(GWT 内置了自己的 JSON 处理库,但它有一些限制)。
if(authenticated){
LoginPojo ch=new LoginPojo();
ch.setImage("image");
ch.setFullName( u.getFirst_name()+" "+u.getLast_name());
ch.setLogin(u.getLogin);
ObjectMapper objectMapper=new ObjectMapper();
String jsonInString = objectMapper.writeValueAsString(ch);
Cookie c=new Cookie("VISITOR",jsonInString);
// c.setSecure(true);
response.addCookie(c);
request.getRequestDispatcher(rootURL).forward(request, response);
}
但是有人说:“HTTP 状态管理机制规范(处理 Cookie)指出,除非它包含整个内容,否则不能在 cookie 的值中包含双引号字符。
不要(试图)将 JSON 放入 cookie 中。”