Anonymous
повторяю еще раз - тест подготавливает окружение для определенного срабатывания определенного кода. а также инструментарий.
определенные ветки кода запустить не так просто. дальше этот тест запускается с отладчиком если нужен его функционал
Sergey
ну и для того чтобы прояснить тебе
tdd - подразумевает написание теста который тебе скажет работает код или нет, он не должен и не будет искать баг, он просто скажет работает или нет
за счет того что это юнит тесты мы точно знаем где не работает
Sergey
процесс отладки это другое - это поиск бага, невсегда явного, но это не тестирование, мы знаем что не работает мы ищем что, как и почему именно не работает и где ошибка
Sergey
Anonymous
ты вот не знаешь меня а утверждаешь ))
по тестированию и отладке у тебя явно путаница в голове
по-моему конкруктивная беседа все показывает.
начиная писать всякую хрень вроде того “ты все путаешь ахахаха”
вместо конкретных ответов на конкретные вопросы - уже вполне характеризует человека.
Я конечно тоже скатился в эту плоскоть, но все-таки обосновал все сначала.
Подтягивать матчасть конечно никогда не лишнее. Только я не теоретик, у меня есть поставленный флоу работы, проекты покрытые тестами, методики поиска багов, которые я использую и они работают.
Поиск бага сводится к выяснению входных данных, далее проблемные данные пополняют список входных данных того или иного теста и запуск этого теста позволяет найти ошибку.
По такой схеме я успешно поддерживаю довольно много проектов, это мне дает довольно дофига уверенности перед теоретическими троллями 😉
Alexander
Добрее надо быть друг к другу. И понимать что если у кого-то сделано так, не обязательно что у всех должно быть так и это правильно. Мы тут не Мартины Фауэлеры, писать бест-практисы для остальных.
Alexander
Это к обоим ремарка
Sergey
Alexander
Кто-то вообще тесты не пишет. Потому что код сразу пишет правильный.
Anonymous
Anonymous
Sergey
А основную суть различия этих процессов я пояснил в сообщениях выше
Sergey
На этом все, диалог с тобой не интересен
Anonymous
все что я пишу просто подтверждается в каждом ответном сообщении
Anonymous
если надо что-то выводить жсон не жсон для этого пишется тестовая среда и там это выводится в удобном виде
да можно продолжать плакать что ведь когда я ищу ошибку я запускаю дебаггер и он просто выводит содержимое переменной а там байты, чем сделать удобный для разработки флоу.
зато по википедии - неудобно отлаживаем отдельно, тестируем отдельно.
Lee
Valentin
@twentydraft тут срутся
Anonymous
https://golang.org/conduct#unwelcome_behavior
Slava
Anatoliy
Ребят, поясните пожалуйста. Вот я использую JWT для аутентификации пользователя. Вот отправил ему этот токен, он действует 5 минут. Что происходит через 5 минут? По идее он истекает и я теперь не даю пользователю делать что он делать должен, я его воспринимаю как гостя. Но! Не буду же я кажыде 5 минут спрашивать пароль, верно? Как этот момент вообще решается при работе с токенами?
Slava
ну если токен на пять минут, значит пользователь должен опять аутентификацию пройти
Alexander
вообще конечно статью бы почитать какую. jwt же разжеван, донельзя. считается хорошей практикой - давать два токена. один для аутентификации, второй - рефреш-токен.
Anatoliy
Это понятно, но я ведь не буду каждые 5 минут пароль спрашивать, верно? А токены как я понимаю используются именно по той причине что они быстро истекают, и при получении их злоумышленник не сможет надолго получить доступ к системе
Anatoliy
Anatoliy
Впрочем спасибо, про второй токен сам не подумал, хоть и слышал, все что нужно нашел) Благодарю)
Alexander
да не за что. плюс надо учитывать что jwt в целом не особо подходит для "стандартных" веб-приложений, имхо. там лучше старые добрые сесии и кукисы. а жвт для мобильного бекенда. или если какие-то микросервисы должны друг с другом "защищенно" общаться
Vsevolod
Anatoliy
Это я понял) Не понял только где эти самые токены хранить надо если у нас веб сервис и пользователь с фронтенда залогинился)
Alexander
какие эти самые? на стороне сервера не надо токены хранить
Anatoliy
у нас есть в итоге access token & refresh token, так? и как я понял jwt является access токеном, и мы ему верим, но есть же еще refresh token?
Alexander
угу, с refresh токеном мы идем, если access-токен заэкспарился.
Alexander
и получаем новый access.
Alexander
ну и политику обновления и отзыва refresh-токена надо продумывать отдельно.
Anatoliy
но хорошо, допустим я храню Access token в куках, и при каждом вызове страницы он отправляется, а где я храню тогда рефреш токен?
Alexander
поэтому я бы просто так рефреш-токены не обновлял.
Anatoliy
Anatoliy
именно потому что рефреш токен как я понял может быть только один на пользователя
Alexander
а так, выкинет сразу как только заэкспарится экссесс-токен, если злоумышленник не угнал рефреш.
Alexander
а если угнал и его тоже, то выкинет как истечет время жизни рефреш-токена
Anatoliy
если угнал access токен - да, а если угнал рефреш что произойдет? он будет год иметь доступ?
Alexander
ну я говорю, тут каждый для себя решает как правильно
Anatoliy
рефреш - долгоживущий
Alexander
угу, ясен перец. но год ставить - перебор
Anatoliy
5 минут на access и месяц на рефреш
Anatoliy
в итоге раз в 5 минут мы делаем обращение к базу и пересобираем пару токенов, но если запросов тысячи в секунду - то мы уже хорошо так времени экономим
Anatoliy
но все же не понятно где их хранить, я про то что нормально ли оба токена хранить в куках
Alexander
ну зависит от того, что на фронте. я хз, где сейчас новомодные js фреймворки данные хранят ? там же есть теперь "локальный сторедж", такая сущность?
Alexander
я бы слал рефреш-токен не в каждом запросе, а только на обновление экссесс-токена
Alexander
ну и хранить на клиенте так, как умеешь
Sergey
Почитайте про oauth (чтобы понять про refresh и access токены)
Но вам тем не менее скорее всего не это нужно
Anatoliy
Anatoliy
мне просто нужна нормально работающая аутентификация на микросервисах
Sergey
Суть в том что рефреш служит только для обновления токена доступа и его обновлять не надо
Anatoliy
То что он служит только для обновления access - я согласен.
Но вот то что его самого не надо обновлять - под вопросом...
https://habrahabr.ru/company/Voximplant/blog/323160/
Sergey
Честно, лень читать
По факту в большинстве систем рефреш не обновляют ибо это излишне
Anatoliy
Просто надо для себя решить может ли пользователь иметь несколько refresh токенов. Если может - тогда возникает веселая штука с логином на нескольких устройствах одновременно и надо придумывать способ как можно определить что пользователь может залогиниться и отрубить другие рефреш токены. Впрочем решается тоже просто - нужная страница доступна только первому access токену который мы получаем вместе с рефреш сразу после ввода логина
Anatoliy
Ладно, в любом случае спасибо за беседу, было интересно)
Sergey
Рефреш нужен один и он не используется для доступа совсем
Sergey
Для доступа используется access token, вы не сможете его получить без рефреш токена но именно он используется для доступа к ресурсам
Sergey
Access токенов может быть более одного
Anatoliy
Так я и не спорю что для доступа только access используется.
Anatoliy
А из тех кто macaron пользует может кто пояснить одну вещь?)
Есть вот такое:
type TokenHandler struct {
SecretKey []byte
DBConn *sql.DB
}
...
handlerStruct := &controller.TokenHandler{
SecretKey: []byte(KEY_SECRET),
DBConn: db,
}
...
m.Post("/", binding.Json(controller.User{}), handlerStruct.CreateUser)
...
func (h *TokenHandler) CreateUser(c *macaron.Context) {
...
Как мне в сам CreateUser передать полученного пользователя?
Anatoliy
По примерам посмотрел - но там именно обработка, а мне то дальше надо передать...
Anonymous
Есть кто с новосибирска? С утра в запой на 1-2 дня.
Anonymous
кто шарит в nginx?
Egor
Anonymous
а где он?
Egor
Последний раз слышал на high load конфе в этом году
Egor
Максим
Anatoliy
🍗
Можно в консоли после того как вывели в консоль текст fmt.Println('text'); изменить/заменить выведенное слово ?
Anonymous
Anonymous
Надеюсь с направлением слеша не ошибся