Сессии горилл хранятся в localStorage - PullRequest
0 голосов
/ 24 августа 2018

Сеансы Gorilla работают довольно хорошо, сохраняя данные сессий в зашифрованном виде в cookie.

Но возможно ли использовать localStorage вместо jar cookie.Конечные точки будут возвращать JSON со свойством session.Код внешнего интерфейса сохранит session в localStorage.Когда запрашивается конечная точка, в заголовке передается session.

Я могу зашифровать / расшифровать / подписать / проверить сеанс с https://github.com/gorilla/securecookie

  1. Интересно,можно использовать localStorage вместо cookie, как я описал?(Я ожидаю, что да, но, возможно, есть причина не делать этого)

  2. Если да, такое решение уже существует?

Если вам интересно"Зачем?"Я хочу обработать сессию явно.Файлы cookie не всегда сохраняются при запросе веб-служб в разных доменах.

1 Ответ

0 голосов
/ 24 августа 2018

Прежде всего, да, это возможно.

Во-вторых, это очень легко сделать.

Все, что вам нужно по существу , - это вставить «cookie» в локальное хранилище на внешнем интерфейсе, но вместо того, чтобы использовать внутреннюю часть для сохранения сеанса в cookie, передайте еговернуться через конечную точку в JavaScript.

Итак, вот о чем я думал вроде , я имею в виду, что я просто использую здесь псевдокод, потому что я никогда раньше не беспокоился об использовании Go.JavaScript несколько более реализован, так как у меня достаточно опыта работы с JavaScript, но вы можете изменить его, кто знает?


Псевдокод Back-end:

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