【发布时间】:2020-03-29 22:07:18
【问题描述】:
我尝试登录、注销以更改值。
调用sessionStore.Save() 与新的session(login) 一起工作。
但是session.Save(r, w)、sessions.Save(r, w)、store.Save(r, w, session) 没有
使用 Windows 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
【问题讨论】: