存储在localStorage中的Gorilla会话

存储在localStorage中的Gorilla会话,go,cookies,session-cookies,gorilla,Go,Cookies,Session Cookies,Gorilla,Gorilla会话通过将会话数据以加密形式存储在cookie中而工作得很好 但是是否可以使用localStorage代替cookiejar呢。端点将返回带有属性会话的JSON。前端代码将在本地存储中保存会话。 当查询端点时,会话将在标头中传递 我可以使用加密/解密/签名/验证会话 我想知道是否可以像我描述的那样使用localStorage而不是cookie?(我希望是,但可能有理由不这样做) 如果是,该解决方案是否已经存在 如果您想知道“为什么?”我希望明确地处理会话。当查询不同域上的web服务

Gorilla会话通过将会话数据以加密形式存储在cookie中而工作得很好

但是是否可以使用localStorage代替cookiejar呢。端点将返回带有属性
会话的JSON
。前端代码将在本地存储中保存
会话
。 当查询端点时,
会话
将在标头中传递

我可以使用加密/解密/签名/验证会话

  • 我想知道是否可以像我描述的那样使用localStorage而不是cookie?(我希望是,但可能有理由不这样做)

  • 如果是,该解决方案是否已经存在


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

    首先,是的,这是可能的

    其次,这很容易做到

    实际上,您只需将“cookie”传递到前端的本地存储中,而不是使用后端将会话存储到cookie中,而是通过端点将其传递回JavaScript

    这就是我想做的,我的意思是我只是在这里使用伪代码,因为我以前从来没有想过要使用Go。JavaScript的实现要多一些,因为我对JavaScript有很多经验,但是你可能希望更改它,谁知道呢


    后端伪代码: 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!");
            }
        );
    }