【问题标题】:Gorilla sessions stored in localStorage存储在 localStorage 中的 Gorilla 会话
【发布时间】:2019-01-31 03:11:55
【问题描述】:

通过将会话数据以加密形式存储在 cookie 中,Gorilla 会话运行良好。

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

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

  1. 我想知道是否可以按照我描述的方式使用 localStorage 而不是 cookie? (我希望是的,但可能有理由不这样做)

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

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

【问题讨论】:

    标签: go cookies session-cookies gorilla


    【解决方案1】:

    首先,是的,这是可能的。

    其次,这很容易做到。

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

    这就是我想有点做的事情,我的意思是我只是在这里使用伪代码,因为我以前从未使用过 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!");
            }
        );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 2021-04-09
      • 1970-01-01
      • 2020-09-25
      • 2014-11-22
      • 2019-05-02
      • 2015-05-03
      相关资源
      最近更新 更多