@vuejs_ru

Страница 1216 из 3900
Roman
26.08.2017
22:06:04
сессии они в том плане хуже, что тут всегда идёт проверка центрального стора, а это не очень хорошо масштабируется, грубо говоря у тебя 1000 API серверов и один центральный session storage, который за-DoS'ить не проблема)) с токенами всё проще, нет центрального стора, у каждого сервера приватный ключ и это всё что ему нужно. Обычно в токен мы помещаем время его expiry и userId. Каждый сервак в таком случае может идентифицировать клиента самостоятельно и это супер, а вот для того чтоб сессии завершать - можно хранить некий black-list отозванных токенов, но тогда лучше на каждом серваки, чтоб опять не вводить центральный стор как в сессиях

Oleh
26.08.2017
22:06:52
а что мешает использовать разные сторы?

там где разные токены

Google
Oleh
26.08.2017
22:08:17
где обычно хранят токены сесий? знаю к примеру redis

Den
26.08.2017
22:08:46
Файлы

Oleh
26.08.2017
22:08:54
Файлы
что?

я об серверсайд

Den
26.08.2017
22:09:26
Прямо в названии я видал

Я бэк

Oleh
26.08.2017
22:10:03
об каких файлах идет речь?

Den
26.08.2017
22:10:14
Ща

Oleh
26.08.2017
22:10:52
с помощью redis делают счетчик количества реквестов в секунду, значит он довольно шустрый in memory же

Roman
26.08.2017
22:11:43
однако с WebSocket'ами на самом деле можно решить проблему ещё элегантнее: ибо с сокетами аутентификация происходит лишь 1 раз при создании связи, а при обработке API call'ов уже не нужно проверять идентификацию, ибо мы мапим userId на fileDescriptor (т.е. идентификатор подключения) и по умолчанию знаем кто откуда ? Сокеты можно с сессиями использовать, ибо теперь API не дёргает при каждом API call'е центральный стор, нагрузка намного меньше. И отозвать сессию можно очень просто, удаляем сессию из стора, обрываем связь сокета, вуаля! WebSocketsSecure + Sessions = ?

Oleh
26.08.2017
22:12:31
о боже, храни в бд токены лутше

Google
Den
26.08.2017
22:12:52
Oleh
26.08.2017
22:13:09
нечего не говорит

Den
26.08.2017
22:13:32
Искоропки лара там хранит

Чем плохо?

Oleh
26.08.2017
22:15:42
ну в продакшн такой вариант не идет, нужно будет постоянно делать запрос на диск и это не оптимизируется не как в бд используются умные алгоритмы которые сводят запросы к бд к минимуму

Den
26.08.2017
22:16:23
Но бд на диске тоже

Тут файл даже не читается

Victor
26.08.2017
22:17:04
как по мне идея интересная

Den
26.08.2017
22:17:27
Victor
26.08.2017
22:17:37
хранить сешены в файлах

Den
26.08.2017
22:17:58
Ну это стандартная практика

Просто если хранить в базе то при разрастании таблицы может резко упасть перформанс

Так было у меня на модыкс

Roman
26.08.2017
22:20:17
кстати насчёт отзыва токенов... можно сделать даже ещё проще: 1. в токены пихать дату регистрации токена, дату истечения, и userId 2. при отзыве просто на все сервера отсинхронить флаг "токены пользотеля XY которые были выданны раньше {Date.now()} не принимать" и собственно всё... спустя некое время (разница между датой выдачи и expire date) этот флаг можно удалять... кстати даже если мы 1 миллиард пользователей облуживаем: worst case когда у нас ВСЕ пользователи свои сесси позакрывали всё-равно 1 гб не привысит на каждом серваке, т.е. это вообще дёшево

Illya
26.08.2017
22:20:37
господи, зачем вы изобретаете велосипеды )

а теперь представим что у нас split brain

и данные на какой-нибудь сервер не засинхронизировались

Google
Illya
26.08.2017
22:21:26
сессии в каком-нибудь key-value аля редис или мемкеш решают проблему так же быстро

и без "самопальных решений"

Roman
26.08.2017
22:22:18
и данные на какой-нибудь сервер не засинхронизировались
ну ведь обычно когда у нас network split то те серваки и к бд сессий обратиться не смогут... так-что это проблема в принципе не решаема.. но токены себя тут лучше поведут чем сессии

Illya
26.08.2017
22:22:33
нет, они поведут хуже

токен будет считаться валидным не будучи валидным

а это огромный security risk

видео смотрели? :)

а то мне лень повторять факты которые там изложены

Roman
26.08.2017
22:23:10
так они всё равно от бд отключены, network split

Illya
26.08.2017
22:23:30
вы думаете у нас одна бд? нет конечно же

Roman
26.08.2017
22:23:41
короче я за WSS + Sessions, это самое элегантное решение как по мне

Иван
26.08.2017
22:23:52
ребят, как правильнее всего хранить приватные ключи для своих приложений, чтобы они проходили например авторизацию для доступа к API. Хранить прямо в коде константой думаю не вариант

Illya
26.08.2017
22:24:09
ага, вот только вебсокеты не проходят через корпоративные прокси у многих клиентов в сша

а еще это не решает задачи сервер-сайд рендеринга

ну и в принципе вебсокеты вообще не про то )

Roman
26.08.2017
22:25:10
ну суть я пояснил, с сокетами лишь при создании связи установление личности требуется

Illya
26.08.2017
22:26:17
суть то хорошо, но обычные http запросы к сожалению гораздо жизнеспособнее

Roman
26.08.2017
22:26:28
провлем с SSR я не вижу, ведь мы по мапингу сокета fd -> uid можем определить личность и собственно рендерить

или я не догоняю чего? ?

Illya
26.08.2017
22:28:10
я о первых запросах )

Google
Illya
26.08.2017
22:28:15
при открытии страницы

Roman
26.08.2017
22:29:32
и... в чём собственно проблема?

Roman
26.08.2017
22:29:32
@xanf_ua можн опять вопрос о vuex) как я еще тогда говорил есть у меня массив объектов в стейте, делаю экшн который выбирает оттуда 1 объект по id. выбор этот сделал в мутации, а не в action как было раньше. я так видел где-то уже делали. но ошибка что я мутирую вне мутаций все еще осталась)

Illya
26.08.2017
22:29:59
покажите стейт и мутации

и... в чём собственно проблема?
да ни в чем. Просто суть в том что jose в принципе не нужно

достаточно сессий

Roman
26.08.2017
22:31:09
Roman
26.08.2017
22:31:10
покажите стейт и мутации
state: { marker: {}, allMarkers: markers }, [SELECT_MARKER]( state, id ) { state.marker = state.allMarkers.find((marker) => marker.id == id) },

Roman
26.08.2017
22:31:46
packet inspection? сомневаюсь.. ибо в случае HTTPS это ничего не даёт, а HTTPS как-бы современный стандарт, особенно во времена Let's Encrypt то)

Admin
ERROR: S client not available

Den
26.08.2017
22:32:00
marker.id == id линтер как твой?

Roman
26.08.2017
22:32:13
четко все

Illya
26.08.2017
22:32:46
state: { marker: {}, allMarkers: markers }, [SELECT_MARKER]( state, id ) { state.marker = state.allMarkers.find((marker) => marker.id == id) },
мы же уже об этом разговаривали. В стейте не должно быть marker

Roman
26.08.2017
22:33:04
мы же уже об этом разговаривали. В стейте не должно быть marker
а где он должен быть?) куда мне отдельно выбранный записать

Illya
26.08.2017
22:33:12
аргх

сейчас, доберусь до ноута

Den
26.08.2017
22:33:40
четко все
Вообще я слыхал это не совсем корректно для JS

Roman
26.08.2017
22:33:56
Den
26.08.2017
22:34:28
(marker) => Number(marker.id) === Number(id) Не щас небывает )))

Google
Roman
26.08.2017
22:35:17
эт конечно круто, но я еще раньше цифрами сделал

еще в роутере

Den
26.08.2017
22:35:36
Тогда без нумбера

Но ===

мы же уже об этом разговаривали. В стейте не должно быть marker
Это, кстати, спорно. Я так не считаю, что маркер там лишний. Зато я уверен, что экшены/мутации для ИЗМЕНЕНИЯ стэйта, а не для чтения.

Den
26.08.2017
22:43:03
Не торопись )

Illya
26.08.2017
22:45:18
@reeei что вы потом делаете с маркером?

с выбранным. Как его изменяете?

Den
26.08.2017
22:45:34
Меняет он

Планирует менять

Roman
26.08.2017
22:46:07
@reeei что вы потом делаете с маркером?
меняю из нескольких мест

Illya
26.08.2017
22:46:17
Как именно?

Мутациями?

Roman
26.08.2017
22:46:30
нет

Illya
26.08.2017
22:46:37
Ну так а что вы хотите тогда?

Roman
26.08.2017
22:46:54
ну просто там может полей 10, мне на все 10 мутаций надо?

Illya
26.08.2017
22:46:57
Нельзя данные в сторе менять не мутациями

См. Выше

Den
26.08.2017
22:47:15
Гы. Он же во вьюхе!

Надо экшенами

Либо менять клон

Страница 1216 из 3900