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

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

от violette_robel , в категории: Golang , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от brooklyn , год назад

@violette_robel 

Для удаления сессии в Go, вы можете использовать пакет github.com/gorilla/sessions. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main

import (
	"net/http"
	"github.com/gorilla/sessions"
)

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

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

func login(w http.ResponseWriter, r *http.Request) {
	session, _ := store.Get(r, "session-name")

	session.Values["authenticated"] = true
	session.Save(r, w)

	w.Write([]byte("Logged in"))
}

func logout(w http.ResponseWriter, r *http.Request) {
	session, _ := store.Get(r, "session-name")

	session.Values["authenticated"] = false
	session.Save(r, w)

	w.Write([]byte("Logged out"))
}


В этом примере создается простой веб-сервер, который имеет два маршрута /login и /logout. Маршрут /login устанавливает значение authenticated в сессии, а маршрут /logout удаляет это значение. Пакет gorilla/sessions управляет созданием и сохранением сессий в куках браузера.

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

от judd , 5 месяцев назад

@violette_robel 

Чтобы удалить сессию в Go, вы можете установить значение в nil и сохранить сессию. Вот пример кода:

1
2
3
4
5
6
7
8
9
// Удаление сессии
func deleteSession(w http.ResponseWriter, r *http.Request) {
    session, _ := store.Get(r, "session-name")

    session.Values["authenticated"] = nil // Установка значения в nil для удаления
    session.Save(r, w)

    w.Write([]byte("Session deleted"))
}


Вы можете добавить этот код в ваш сервер и создать новый маршрут, который будет вызывать эту функцию для удаления сессии.