
Harry
12.07.2018
18:27:32

Человек
12.07.2018
18:39:04
Здравствуйте, как можно узнать онлайн ли ПК? (включена машина или выключена)

German
12.07.2018
18:43:04

Человек
12.07.2018
18:44:06
Пинг?
Так пингует же маршрутизатор, а не ПК и если маршрутизатор будет включен значит ты онлайн, а я не думаю что кто-то выключает маршрутизатор на ночь

Google

Человек
12.07.2018
18:44:11

Subbotin
12.07.2018
18:44:23

German
12.07.2018
18:45:45

yuriy
12.07.2018
22:28:32
https://heroiclabs.com/docs/
Кто то пользовал из чата? Хочу форкнуть чтобы без lua только на go логику писать

Tatiana
13.07.2018
02:19:41
www.linkedin.com/in/tatiana-e

Daniel
13.07.2018
02:55:40
Так их!

ros
13.07.2018
05:11:53

Daniel
13.07.2018
05:13:46
iptables будет лучше справляться

ros
13.07.2018
05:16:11
зависит от того нужна ли та производительность

Daniel
13.07.2018
05:17:14
не зависит, на самом деле

Marperia
13.07.2018
05:54:47
Здравствуйте, у вас тут принято представляться?

Google

Daniel
13.07.2018
05:55:30
давно уже никто не

Marperia
13.07.2018
05:56:05
Ничего, я как раз только что одну анкету в другом чате заполнил.
▫️У меня несколько проектов, от open-source криптобиржи и open-source криптомагазина до искуственного интеллекта и приложения для выработки привычек. Конкретно сейчас работаю над безблочной криптовалютой.
▫️Специалист-шмециалист. Везде по чуть-чуть: безопасность, web-highload, криптовалюты, медицина и маркетинг.
▫️Польза для сообщества конкрено от меня в генерации идей и корявой их реализации, но если тут есть страждущие помочь — с этим уже можно работать.
▫️Мне интересно получать ответы опытных специалистов в неоднозначных вопросах, а также найти контрибьютеров под некоторые проекты.
Сходу вопрос: как у вас реализована авторизация? Если можно, было бы здорово посмотреть куски кода.

Daniel
13.07.2018
06:03:25
авторизация чего?

Dmitri
13.07.2018
06:04:11
Смотрю в статистику чатика: 1692 members. Представил представление от каждого... Собственно, почему бы и нет, само по себе контент)

Marperia
13.07.2018
06:06:18

Daniel
13.07.2018
06:06:58
есть подозрение, что вы аутентификацию с авторизацией путаете :)

Marperia
13.07.2018
06:07:27
Сам факт того, что я не могу использовать токены для доступа к приложению говорит о том, что мне нужна регистрация + авторизация. По-моему, вне зависимости от типа приложения она реализуется похожим образом.
Да-да, вы молодец, я идиот, мне нужна аутентификация.

Daniel
13.07.2018
06:07:52
еще раз
авторизация на большинстве сайтов тривиальная: зашел и видишь все. отдельно авторизуется только личный кабинет
по логину и паролю бывает не авторизация, а аутентификация
:)
устроена она, в общем, двумя способами
или хранение сессии в базе, или JWT-подобные решения
у обоих вариантов есть недостатки

Marperia
13.07.2018
06:11:36
у обоих вариантов есть недостатки
А можно поподробнее? Я знаю только про два:
В случае сессий ID этой сессии нужно где-то хранить, как правило в memcached или redis.
А в случае JWT... Ну, тут я вообще нуб. Разве что токен нужно обновлять автоматически, да. Но и сессию, кажется, тоже?

Daniel
13.07.2018
06:12:23
в случае jwt у вас нет возможности разлогинить пользователя
пока валиден jwt - позможен вход

Marperia
13.07.2018
06:13:28
А как реализуется обновления токена раз в N минут?

Daniel
13.07.2018
06:13:49
на сайте все просто - на каждый запрос выдаем новый

Google

Marperia
13.07.2018
06:15:17
Т.е. писать middleware, в котором, если токен валидный, то выдать новый? А время обновления токена? Я на стаковерфлоу видел токен со сроком действия 5 минут и периодом обновления 4, но по-моему там несколько иной случай.

Daniel
13.07.2018
06:16:50
ну я делаю так обычно: скользящий ключ, период ротации задается в конфиге
все токены, подписанные невалидным ключем, становятся невалидны автоматически
получается и безопасно достаточно, и автоматический разлогин по неактивности

Marperia
13.07.2018
06:18:20
А если во время пересоздания ключа юзеры находятся на сайте, их выкинет?

Daniel
13.07.2018
06:18:46
в любой момент времени активны два ключа - старый и новый
проверяются оба

Marperia
13.07.2018
06:21:39
Это уже что-то. Пользователь при этом сможет оставаться в системе на двойное время жизни ключа, если он не залогинен во время смены?

Daniel
13.07.2018
06:23:18
на время жизни одного ключа - того, которым подписан его последний токен
подписываются токены всегда новым ключем

Dmitriy
13.07.2018
06:24:53

Daniel
13.07.2018
06:25:24
я не знаю способа проще без хранения сессии в базе

Dmitriy
13.07.2018
06:29:38

Daniel
13.07.2018
06:30:06
проверка на каждый запрос, но без базы, криптографически

Dmitriy
13.07.2018
06:31:23
Ага, спасибо, понял! Всегда добавлял сверху проверку по базе просто, чтобы можно было управлять отзывом ключа)

Daniel
13.07.2018
06:31:35
ну вот да

Никита
13.07.2018
07:01:50
Сам токен привязан к пользователю в БД.

Dmitriy
13.07.2018
07:03:42

Никита
13.07.2018
07:03:58
Нет

Google

Никита
13.07.2018
07:04:18
У пользователя есть токен, с которым он совершает все запросы

Dmitriy
13.07.2018
07:04:32
ааа, все понял, клиент отправляет токен каждый раз) без запятых не правильно проситал)

Marperia
13.07.2018
07:12:54
Кстати, а какие параметры вы передаёте в JWT и почему?
Я вот ID для запросов к БД,
роль (админ/нет) для доступа к админке,
аффилиата для начисления процентов
и имя пользователя для отображения, и всё это прямо в токене, без лишнего запроса к БД.
А ещё время начала и окончания действия токена.

Dmitriy
13.07.2018
07:14:19

Marperia
13.07.2018
07:15:18

Dmitriy
13.07.2018
07:18:39
ну а какой ответ вы хотите?
скажем есть проект, с множеством платежных мерчантов и пользователи привязываются к ним, у мерчантов есть проценты возгараждения, комиссии и курсы.
для данного проекта будет удобно в токен пользователя загрузить всю информацию, которая ему нужна для оперативной работы.
а есть другой проект, скажем бложик, где есть только пользователь без нагромаждения доп. сущностей, там соответственно будет более чем достаточно передачи в токене ID пользователя + какого-то текстового поля для отображения на фронте.
формулируйте вопрос как можно более конкретно иначе будете получать ответы за которые бы на стековерфлоу не проголосовали бы)))

Andrew
13.07.2018
07:18:54


Marperia
13.07.2018
07:20:29
ну а какой ответ вы хотите?
скажем есть проект, с множеством платежных мерчантов и пользователи привязываются к ним, у мерчантов есть проценты возгараждения, комиссии и курсы.
для данного проекта будет удобно в токен пользователя загрузить всю информацию, которая ему нужна для оперативной работы.
а есть другой проект, скажем бложик, где есть только пользователь без нагромаждения доп. сущностей, там соответственно будет более чем достаточно передачи в токене ID пользователя + какого-то текстового поля для отображения на фронте.
формулируйте вопрос как можно более конкретно иначе будете получать ответы за которые бы на стековерфлоу не проголосовали бы)))
А вот за такой уже проголосовали бы, да.
Ну я имел в виду как раз то, что вы сами используете? Тут ведь много людей со стажем 3+ лет, при том, что у меня меньше года.

Евгений
13.07.2018
07:20:58

Никита
13.07.2018
07:23:44

Евгений
13.07.2018
07:24:45
Ее трудно улучшить без конкретного понимания проблем. Т.к. улучшая одно. сделаешь хуже другое и непонятно, что важнее.
Схема норм. НО
- не храните ничего более критического чем нужно
- все данные могут быть прочитаны
- обратите внимание на подпись и ключи - если не повезет, то вам еще и запишут туда любые права и все поломают
- подумайте какие данные вы можете случайно раскрыть и сделать подбираемыми - например, id юзеров, каких-то объектов,котрые потом можно будет вытащить и пр
- как отзывать токен? Или это не требуется?

Никита
13.07.2018
08:20:26
Как правильно выставить для БД следующие значения:
SetConnMaxLifetime()
SetMaxOpenConns()
SetMaxIdleConns()

Anton
13.07.2018
08:23:18
полагаю, что при инициализации приложения
это разговор про пул идет?

Никита
13.07.2018
08:23:50
Вопрос не в том, когда это делать
А в том, какие значения ставить
как понять, какие значения нужно выставить

Anton
13.07.2018
08:24:12
эмпирически)

Никита
13.07.2018
08:24:27
Не очень рабочий метод

Google

Anton
13.07.2018
08:24:31
а коде есть какие-то дефолты?

Никита
13.07.2018
08:24:31
Пробовал так

Daniel
13.07.2018
08:24:41

Никита
13.07.2018
08:25:16
Ну допустим 1к запросов в секунду.

Anton
13.07.2018
08:25:31
вам нужна волшебная формула?

Никита
13.07.2018
08:25:43
Желательно да

Anton
13.07.2018
08:25:51
))

Никита
13.07.2018
08:25:51
Методом подбора не очень хороший способ

Anton
13.07.2018
08:26:07
методом осознанного подбора (эмпирически)

Никита
13.07.2018
08:26:26
Ну я осознанно подбирал
И одни значения могут выдавать разный результат

Anton
13.07.2018
08:26:45
а в чем выражается нерабочесть подобранных параметров?
чем они не устраивали?

Никита
13.07.2018
08:27:16
Первый раз выдавало 3к запросов в секунду, второй 4.5, третий 3.5. И все при одних и тех же значениях.
Не то чтобы не устраивали, сколько я хочу понять как это работает