170 похожих чатов

Всем доброе утро! Подскажите вопрос все с той же проверки

токена в куках и в бд
Вот я записал в бд токен и в куку я тоже записал там 1==1 образно
Теперь проверка токена
func validateTokenCookie(w http.ResponseWriter, r *http.Request) bool {
// Получение токена из куки
cookie, err := r.Cookie("my_auth_token")
// Получение ключа для подписи токена
key := []byte("my_secret_key")
// Проверка подписи токена и извлечение его параметров
token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("unexpected signing method")
}

return key, nil
})
// Проверка параметров токена
if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
username, ok := claims["username"].(string)
password, ok := claims["password"].(string)
exp, ok := claims["exp"].(float64)
if !ok || !validateUserCredentials(username, password) {
return false
}
// Проверка времени действия токена
if time.Now().Unix() > int64(exp) {
return false
}
return true
} else {
return false
}
}

А вот теперь проверку нужно сделать в бд токен в куке == токен в бд ?

func validateUserCredentials(username, password string) bool {
// Проверка логина и пароля в вашей базе данных или в другом источнике
return username == "my_username" && password == "my_password"
}

Я вот не пойму мне получается известен username на момент проверки?
Все что я хочу чтобы у меня был username по которому я смогу пойти в базу и там посмотреть а есть такой пользователь
И почему то у меня в голове то что все записи надо выпарсить и только потом проверять?
Или в функции проверке мне нужно отправить запрос с паараметрами username и pass ?
А далее вернуть просто TRUE если такой пользователь нашелся ?

14 ответов

7 просмотров

JWT просто подписывает данные, которые в открытом виде в нем лежат) в данные можно положить userid и только по нему грузить пользователя из базы, дополнительной проверки токена не нужно, как и хранить его где-то. Хранить даже опасно, потому что токен может быть валидным JWT после добавления пары посторонних символов в него клиентом)

Vladimir- Автор вопроса
Alexander
JWT просто подписывает данные, которые в открытом ...

ну я уже положил в данные username pass data_now ну в бд же все равно что то нужно хранить или тут уже код про то что в бд не нужно хранить ? Ну а где хранить тогда тот iser id чтобы делать сравнение ?

Vladimir
ну я уже положил в данные username pass data_now ...

Айди в токене, больше в него пихать ничего не нужно. Вставь токен на jwt.io, убедишься, что все данные в нем видно. Это тупо base64

Vladimir- Автор вопроса
Alexander
Айди в токене, больше в него пихать ничего не нужн...

понял концепт положил пароль-засветил пароль Но что есть id который нужно положить в токен ?

Vladimir- Автор вопроса
Alexander
Айди пользователя))

в бд ? автоинремент который ?

Alexander
JWT просто подписывает данные, которые в открытом ...

У вас какой-то неправильный JWT, вы его без подписи что ли используете?

А можно пример подписанного jwt и пары символов, которые можно в него добавить, сохранив его валидность?

Алексей Попов
А можно пример подписанного jwt и пары символов, к...

Можно, просто убираешь подпись из него и всё, правда я не уверен, что это будет JWT, вроде в нем подпись обязательна

Алексей Попов
А можно пример подписанного jwt и пары символов, к...

В чате можно поискать, вот пример для всех любителей отзывать через черные списки https://t.me/gogolang/696438

Alexander
В чате можно поискать, вот пример для всех любител...

так а что в таком случае мешает отзывать по jti, а не по токену целиком

Alexander
В чате можно поискать, вот пример для всех любител...

Дык ты намеренно вводишь в заблуждение, ты не меняешь payload, дописывая в него новые данные, ты просто пользуешься косяками base64, чтобы провести атаку другого рода

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта