Я пытался войти, выйти из системы, чтобы изменить значение.
Вызов sessionStore.Save()
работает с новым session(login)
.
Но session.Save(r, w)
, sessions.Save(r, w)
, store.Save(r, w, session)
нет
На виндовс 10 ничего не работает.
Я думаю, что причина в разрешениях Windows.
package main
import (
"fmt"
"net/http"
"github.com/gorilla/sessions"
)
var (
// key must be 16, 24 or 32 bytes long (AES-128, AES-192 or AES-256)
key = []byte("super-secret-key")
store = sessions.NewCookieStore(key)
)
func login(w http.ResponseWriter, r *http.Request) {
session, _ := store.Get(r, "cookie-name")
// Authentication goes here
// ...
// Set user as authenticated
session.Values["authenticated"] = true
session.Save(r, w)
}
func logout(w http.ResponseWriter, r *http.Request) {
session, _ := store.Get(r, "cookie-name")
// Revoke users authentication
fmt.Fprintln(w, "session : %B", session.Values["authenticated"])
session.Values["authenticated"] = false
fmt.Fprintln(w, "session : %B", session.Values["authenticated"])
session.Save(r, w)
//sessions.Save(r, w)
//store.Save(r, w, session)
}
func main() {
http.HandleFunc("/secret", secret)
http.HandleFunc("/login", login)
http.HandleFunc("/logout", logout)
http.ListenAndServe(":8080", nil)
}
выход:
> curl -s -I http://localhost:8080/login
HTTP/1.1 200 OK
Set-Cookie: cookie-name=MTU3NTUwODQ2MX...
> curl -s --cookie "cookie-name=MTU3NTUwODQ2MX..." http://localhost:8080/logout
session : true
session : false
> curl -s --cookie "cookie-name=MTU3NTUwODQ2MX..." http://localhost:8080/logout
session : true
session : false
> curl -s --cookie "cookie-name=MTU3NTUwODQ2MX..." http://localhost:8080/logout
session : true
session : false