@Kagtaviy

Как работать с сессиями в golang?

Здравствуйте, прошу помощи в объяснение принципа работы с сессиями.
Не могу понять принцип работы с сессиями(Испльзую Gorilla sessions и redis).
Вот например:
Делаю авторизацию пользователя. Пользователь вводить данные, потом они сверяются с БД и если все правильно то должна генерироваться сессия? Предположим мы сгенерировали сессию, а что дальше, грубо говоря как понять что Иван это Иван а не Коля?
Следуйщий вопрос, за что отвечает "something-very-secret" в переменной store и зачем он нужен?
var store = sessions.NewCookieStore([]byte("something-very-secret")) // что это за secret key и зачем он используется

    func MyHandler(w http.ResponseWriter, r *http.Request) {
        session, _ := store.Get(r, "session-name")
        session.Values["foo"] = "bar"
        session.Values[42] = 43
        session.Save(r, w)
    }

И последний вопрос, на странице Gorilla sessions наткнулся на пакет https://github.com/boj/redistore , зачем он нужен?
Заранее спасибо!
  • Вопрос задан
  • 6306 просмотров
Решения вопроса 1
@pcdesign
Пользователь вводить данные, потом они сверяются с БД и если все правильно то должна генерироваться сессия?


Верно.

Предположим мы сгенерировали сессию, а что дальше, грубо говоря как понять что Иван это Иван а не Коля?


Ну, внутри сессии в зашифрованном виде обычно хранится id юзера.
session.Values["user_id"] = "123"

Следуйщий вопрос, за что отвечает "something-very-secret" в переменной store и зачем он нужен?


Это ключ шифрования. Чтобы в куках браузера хранить не в открытом виде данные, а в зашифрованном.

И последний вопрос, на странице Gorilla sessions наткнулся на пакет https://github.com/boj/redistore , зачем он нужен?


Это способ хранения сессий на бакэнде, в данном случае в базе данных редис.
Но, к этому способу стоит подходить, когда он на самом деле нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
0xcffaedfe
@0xcffaedfe
Developer & Reverser
Ответ написан
Комментировать
fastpars
@fastpars
как понять что Иван это Иван а не Коля

session.Values["userID"] = "some-user-id"

// что это за secret key и зачем он используется

Используется для шифрования сессии. Можт принимать любое значение.

https://github.com/boj/redistore

Для хранения сессий в редисе ) ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы