Best-practice-Sitzungen mit (gorilla/Sitzungen)

Bevor Sie beginnen Nutzung von sessions in golang ich brauche die Antworten auf einige Fragen, die

session-Beispiel

import "github.com/gorilla/sessions"

var store = sessions.NewCookieStore([]byte("33446a9dcf9ea060a0a6532b166da32f304af0de"))

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

    session.Values["foo"] = "bar"
    session.Values[42] = 43
    session.Save(r, w)

    fmt.Fprint(w, "Hello world :)")
}

func main(){
    store.Options = &sessions.Options{
        Domain:     "localhost",
        Path:       "/",
        MaxAge:     60 * 15,
        Secure:     false,
        HttpOnly:   true,
    }
}

Q1:

Ist es möglich, mehrere sessions auf die gleiche domain mit unterschiedlichen Namen?

session1, _ := store.Get(r, "session-name-1")
session2, _ := store.Get(r, "session-name-2")

Wann benötigen Sie mehrere Sitzungen auf derselben domain?

Q2:

Was ist die beste übung, um die Variablen aus der session?
my_session_var = Sitzung.Werte["foo"]

Q3:

Wie um zu überprüfen, ob die Sitzung gespeichert wird, richtig? Wenn Sie Zugriff auf die gleichen map zu beiden set-und get-Variablen?

update

package main

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

var (
    store = sessions.NewCookieStore([]byte("33446a9dcf9ea060a0a6532b166da32f304af0de"))
)

type handler func(w http.ResponseWriter, r *http.Request, s *sessions.Session)

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

    h(w, r, session)
}

func Handler_404(w http.ResponseWriter, r *http.Request, s *sessions.Session){
    fmt.Fprint(w, "Oops, something went wrong!")
}

Fehler

# command-line-arguments
.\mux.go:101: cannot convert Handler_404 (type func(http.ResponseWriter, *http.Request, *sessions.Session)) to type http.HandlerFunc
InformationsquelleAutor clarkk | 2014-09-29
Schreibe einen Kommentar