大猩猩会话存储在localStorage中

时间:2018-08-24 15:44:45

标签: go cookies session-cookies gorilla

大猩猩会话通过将会话数据以加密形式存储在cookie中而非常有效。

但是可以使用localStorage代替cookie jar。端点将返回带有属性session的JSON。前端代码会将session保存在localStorage中。 当查询端点时,session将在标头中传递。

我可以使用https://github.com/gorilla/securecookie加密/解密/签名/验证会话

  1. 我想知道是否可以像我描述的那样使用localStorage代替cookie? (我希望是的,但也许有理由不这样做)

  2. 如果是,是否已经存在这样的解决方案?

如果您想知道“为什么?”我希望明确处理会议。查询不同域上的Web服务时,并不总是存储Cookie。

1 个答案:

答案 0 :(得分:3)

首先,是可以的。

第二,这很容易做到。

您基本上需要做的就是将“ cookie”粘贴到前端的本地存储中,而不是使用后端将会话存储到Cookie中,而是通过JavaScript的端点。

所以这就是我在想 kinda 的方式,我的意思是我在这里只是在使用伪代码,因为我以前从未使用过Go。由于我在JavaScript方面拥有丰富的经验,因此JavaScript的实现程度有所提高,但是您可能希望更改它,谁知道呢?


后端伪代码:

@GET
@Path("/getsession")
getSession () { return session; }

@POST
@Path("/setsession")
setSession (json) { session = validateSession(json); }

JavaScript伪代码:

$.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!");
        }
    );
}