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 ответов

21 просмотр

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, чтобы провести атаку другого рода

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта