大猩猩会话通过将会话数据以加密形式存储在cookie中而非常有效。
但是可以使用localStorage代替cookie jar。端点将返回带有属性session
的JSON。前端代码会将session
保存在localStorage中。
当查询端点时,session
将在标头中传递。
我可以使用https://github.com/gorilla/securecookie加密/解密/签名/验证会话
我想知道是否可以像我描述的那样使用localStorage代替cookie? (我希望是的,但也许有理由不这样做)
如果是,是否已经存在这样的解决方案?
如果您想知道“为什么?”我希望明确处理会议。查询不同域上的Web服务时,并不总是存储Cookie。
答案 0 :(得分:3)
首先,是可以的。
第二,这很容易做到。
您基本上需要做的就是将“ cookie”粘贴到前端的本地存储中,而不是使用后端将会话存储到Cookie中,而是通过JavaScript的端点。
所以这就是我在想
@GET
@Path("/getsession")
getSession () { return session; }
@POST
@Path("/setsession")
setSession (json) { session = validateSession(json); }
$.ajax(
url:"/getsession",
type: "GET",
success: function (data) {
var session = JSON.stringify(data);
localStorage.setItem("session", session);
}
);
var storedSession = localStorage.getItem("session");
if (storedSession != null) {
storedSession = JSON.parse(storedSession);
$.ajax(
url:"/setsession",
type: "POST",
data: storedSession,
success: function () {
console.log("success!");
}
);
}