Стратегия аутентификации JWT - PullRequest
0 голосов
/ 22 февраля 2019

Прямо сейчас у меня возникает путаница, стоит ли сохранять токен JWT в сеансе или нет

Должен ли я

  1. Сохранять его в Redis после создания токена

    // JWT TOKEN
    token := CreateToken(user)   
    
    // Storing it in Gorilla Session + Redis     
    s := sessions.Default(c)
    s.Set("token", token)
    s.Save()
    

Так что вместо этого возьмите токен с сервера из последующего запроса из заголовка запроса

    s.Get("token")
    // and to something with it

Передайте токен в последующем запросе, чтобы на каждом маршруте, который требовал токен,

func login(c *gin.Context) {
    c.Getheader("Authorization")
}

Я использую каркас джина

Какой подходлучший сеанс или последующий запрос от пользователя

С уважением, Науфал

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Не хранить JWT в сеансах.

Одним из важных преимуществ использования JWT является сохранение состояния сервера без состояния.Теперь, если вы включаете JWT в сеансы, вы теряете преимущества JWT.

Пример:

Скажем, у вас есть два экземпляра вашего сервера с балансировкой нагрузки.Если вы не создадите какое-то общее хранилище сеансов, ваш посетитель будет вынужден каждый раз посещать один и тот же сервер (и это непросто).

0 голосов
/ 22 февраля 2019

Если вы делаете клиента - тогда ДА, поскольку вы получили токен, вы должны сохранить его и передать с последующими запросами.

Если вы сделаете сервер - тогда НЕТ.Вам не нужно хранить выданный вами токен, но вы должны проверять его всякий раз, когда получаете запрос клиента.Таким образом, вы можете сделать вашу службу без сохранения состояния и более масштабируемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...