Цитируя
Максим Федоров :
Пришел логиниться юзер, вы:
- в хэндлере пошли в АПИ, получили токен ..
- создали сессию (например в памяти или редисе)
- в куку сохранили токен юзера и отдали response
- юзер пошел в кабинет, пришел к вам на бекенд гошки, вы првоерили сессию, если нет в сессии нет юзера — отправили ошибку6 если есть значение — взяли токен из сессии и пошли в АПИ за данными
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 secret(w http.ResponseWriter, r *http.Request) {
session, _ := store.Get(r, "cookie-name")
// Check if user is authenticated
if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {
http.Error(w, "Forbidden", http.StatusForbidden)
return
}
// Тут из сессии получили токен — пошли в АПИ за данными
fmt.Fprintln(w, "The cake is a lie!")
}