Ответы пользователя по тегу Веб-разработка
  • Как реализовать хранение токена в Web-App на GoLang?

    Morugar
    @Morugar Автор вопроса
    Цитируя Максим Федоров :

    Пришел логиниться юзер, вы:
    - в хэндлере пошли в АПИ, получили токен ..
    - создали сессию (например в памяти или редисе)
    - в куку сохранили токен юзера и отдали 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!")
    }
    Ответ написан
    Комментировать