Gewusst wie: löschen von Cookies
Schrieb ich eine web-Anwendung, die ein cookie und löschen Sie Sie. Zu klären Szenario, was ich meine, betrachten Sie den folgenden code-snippet.
package main
import (
"fmt"
"github.com/gorilla/mux"
"net/http"
"time"
)
func rootHandler(rw http.ResponseWriter, r *http.Request) {
fmt.Fprintf(rw, "Hello Foo")
}
func setCookieHandler(rw http.ResponseWriter, r *http.Request) {
c := &http.Cookie{
Name: "storage",
Value: "value",
Path: "/",
MaxAge: 0,
HttpOnly: true,
}
http.SetCookie(rw, c)
}
func deleteCookieHandler(rw http.ResponseWriter, r *http.Request) {
c, err := r.Cookie("storage")
if err != nil {
panic(err.Error())
}
c.Name = "Deleted"
c.Value = "Unuse"
c.Expires = time.Unix(1414414788, 1414414788000)
}
func readCookieHandler(rw http.ResponseWriter, r *http.Request) {
c, err := r.Cookie("storage")
if err != nil {
panic(err.Error())
}
fmt.Println(c.Expires)
}
func evaluateCookieHandler(rw http.ResponseWriter, r *http.Request) {
c, err := r.Cookie("storage")
if err != nil {
panic(err.Error())
}
if time.Now().After(c.Expires) {
fmt.Println("Cookie is expired.")
}
}
func main() {
mux := mux.NewRouter()
mux.HandleFunc("/", rootHandler)
mux.HandleFunc("/cookie", setCookieHandler)
mux.HandleFunc("/delete", deleteCookieHandler)
mux.HandleFunc("/read", readCookieHandler)
mux.HandleFunc("/eval", evaluateCookieHandler)
http.ListenAndServe(":3000", mux)
}
Wie Sie sehen können, wenn ich Besuch /cookie Lage, es wird ein cookie gesetzt, wie erwartet. Wenn ich dann aufrufen /löschen, es sollte den Namen ändern, den Wert und die abgelaufene Zeit von cookie. Die abgelaufene Zeit geändert wird, aber name und Wert nicht.
Was ich will, ist, löschen Sie die Cookies aus dem browser für die Abmeldung im system-Authentifizierung, wenn Benutzer klicken Sie auf " Abmelden-button zum löschen von cookie.
Entdecke ich auch dieser link und befolgen Sie die Ratschläge, aber funktioniert nicht wie erwartet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Cookies sind sortiert nach name, also, wenn Sie "ändern" den Namen, die Sie tatsächlich "schaffen" ein anderes cookie bereits abgelaufen ist.
Halten die Namen das gleiche und es sollte funktionieren, aber vergessen Sie nicht, einige Zeit in Anspruch nehmen, eines Tages zu Lesen, über cookies und wie Sie funktionieren.
Löschen Sie einen cookie namens "storage" senden " set-cookie mit dem gleichen cookie-Namen.
deleteCookieHandler() sollte wie folgt