Как удалить сессию в golang?

Пользователь

от carlee , в категории: Общие вопросы , 8 месяцев назад

Как удалить сессию в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от marjorie.goldner , 8 месяцев назад

@carlee 

Для удаления сессии в Golang вы можете использовать функцию session.Clear().


Прежде всего, вам нужно импортировать пакет "github.com/gorilla/sessions" и создать объект хранилища сессий с помощью функции NewCookieStore():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import (
    "github.com/gorilla/sessions"
    "net/http"
)

var store = sessions.NewCookieStore([]byte("secret-key"))

func main() {
    http.HandleFunc("/logout", logoutHandler)
    http.ListenAndServe(":8080", nil)
}

func logoutHandler(w http.ResponseWriter, r *http.Request) {
    session, _ := store.Get(r, "session-name")
    session.Options.MaxAge = -1 // Установите MaxAge на отрицательное значение для удаления сессии
    session.Save(r, w)
    // Перенаправление пользователя на другую страницу
    http.Redirect(w, r, "/login", http.StatusSeeOther)
}


В данном примере потребуется обработчик маршрута /logout, который будет вызываться при выходе из системы. В этом обработчике мы получаем текущую сессию с помощью store.Get(), устанавливаем MaxAge на отрицательное значение для удаления сессии и сохраняем изменения с помощью session.Save(). Затем мы перенаправляем пользователя на другую страницу с помощью http.Redirect().

Пользователь

от porter.kertzmann , 7 месяцев назад

@carlee 

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