@angular_js

Страница 104 из 325
Sergey
29.01.2017
15:32:44
то есть у тебя тупо json в base64 + подпись

Артем
29.01.2017
15:33:41
Спасибо

Буду читать про это

Sergey
29.01.2017
15:34:07
jwt.io

Google
Sergey
29.01.2017
15:34:11
самый наглядный ресурс

Артем
29.01.2017
15:52:59
Так я смысл jwt не понял, если раньше зная токен какого нибудь чувака,мог зайти под его именем на его страницу. И как я понял я тоже самое могу сделать если у меня будет jwt маркер

Смысл шифрования токена тогда какой?

Sergey
29.01.2017
15:53:58
смысл в том что я не храню токен на сервере

ну то есть тебе сервак когда-то (минут 5 назад) дал токен погонять систему минут 10

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

может аватарка еще

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

таким образом я могу до бесконечности масштабировать систему на сервере

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

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

но в подавляющем болшинстве систем хватит того что ты будешь выдавать токен минут на 5

ничего плохого обычно за 5 минут не случается

Google
Sergey
29.01.2017
15:58:11
ну и в целом есть доп решения вроде поставить мидлвэрю вокруг всех эндпоинтов API которые будут инвалидировать чуть что сессии... но это тип... такой редкий кейс

Артем
29.01.2017
16:02:02
Это получается если я шлю обычный запрос на сервер и отправляю в заголовке мой jwt маркер,то я думаю на сервере должен быть какой-то сервис,который в зависимости от моей подписи в токене дает мне определенные права

Правильно я понял?

Ты работаешь на asp net mvc?

Sergey
29.01.2017
16:03:37
> который в зависимости от моей подписи в токене дает мне определенные права не, определенные права у тебя уже вшиты в json токена (payload), а подпись лишь верифицирует что ты токен не сам сгенерил а тебе его выдал сервак.

Артем
29.01.2017
16:05:43
Еще вопрос.если у нас вся инфа о пользователе на клиенте зашифрована, как тогда на клиенте узнать что я являюсь админом?

Придумал

Sergey
29.01.2017
16:06:39
она не зашифрована

я ж говорил уже

у тебя токен выглядит так

const payload = JSON.stringify({"uid": "some-user-id", "permissions": ["user_managment", "admin"]); const token = "${base64encode(payload)}.${sign(payload)}";

ну это оч схематично

то есть что бы достать инфу из токена на клиенте ты берешь 2-ую часть токена, делаешь base64 decode и json.parse

и вуаля

вся необходимая информация для авторизации

(естественно никаких секретных данных там лежать не должно, например видел как люди туда email-ы пихают)

Артем
29.01.2017
16:10:43
А ты на .net работаешь?

Спасибо за информацию

Sergey
29.01.2017
16:11:02
нет, на php в основном

ну и немного nodejs

Google
Sergey
29.01.2017
16:11:19
.net-ом баловался года 4 назад

сейчас все посматриваю на Core и в целом то что я вижу мне дико нравится

но времени никак не могу найти

Артем
29.01.2017
16:13:32
Я думаю тогда чтоб это все использовать,перед каждым защищенным методом придется свой атрибут писать,который в зависимости от токена и от прав,которые там прописаны,будет решать,можно ли мне достучаться до ресурса или нет

Я думаю обычный authorize атрибут там не пойдет

Сейчас почитаю как это все в .net использовать

Sergey
29.01.2017
16:15:16
эээээм

я думаю любой приличный фреймворк сейчас имеет поддержку JWT

удобную

любой где есть механизмы авторизации встроенные

ну то есть ты из JWT токена генеришь себе на сервере объектик и уже его используешь в правилах авторизации.

в spring или там в php-ном symfony для этого вообще отдельный класный механизм воутеров придуман что бы изолировать все операции по проверке прав в маленькие сервисные объекты

Sergey
29.01.2017
16:16:36
и в коде ты потом делаешь что-то типа

$this->denyAccessUnlessGranted(OrderVoter::CANCEL, $order);

JT
29.01.2017
18:02:12
привет, а есть кто юзал cordova ?

Denis
29.01.2017
18:12:55
Есть

Юзай rn, мы уже переехали

Артем
29.01.2017
18:15:51
Во всем приложении должен быть только один модуль?

Или как?

Ilya
29.01.2017
20:44:55
Есть тут полуночники?

Google
Ilya
29.01.2017
20:45:55
Ни у кого не было такой проблемы, что $http стал сильно тормозить? Запрос якобы возвращается через 2 секунды, хотя если послать запрос из того же места через jquery.get() по тому же адресу, то запрос возвращается за 200мс

Раньше все норм было, попробовал отключить последние плагины, что навесил недавно, но это не спасло положение

Jared
29.01.2017
20:50:55
Другие браузеры работали как ни в чем не бывало)

Ilya
29.01.2017
20:51:45
Да, https, но не было такой галимотьи раньше Да и если зайти на продакшен-домен, где более старая версия, то там все летает

прям совсем дичь какая-то

?

Не лепить же jquery запросы вместо старого доброго $http

Jared
29.01.2017
20:54:10
Так сервер (api) один, а разные версии клиента работают по-разному? Тогда где-то косяк, явно не сертификат, как в моем случае

Так-то никакой регрессии в ангуляре с $http не наблюдается

Admin
ERROR: S client not available

Ilya
29.01.2017
20:57:27
Ясно-понятно Никто не сделал еще ИИ, который бьет током за плохой код? И второй вопрос, $http посылает запросы асинхронно? Можно послать парочку синхронно?)

Или это уже будет не хорошо?

Ilya
29.01.2017
21:00:37
Тогда я не пойму в чем проблема

Убрал шаринг-сервис, который запрашивал кол-во расшариваний на каждую кнопку по отдельному запросу, теперь все быстро

верну - грузит 2с

Виктор
29.01.2017
21:19:57
Промисы асинхронны
Как раз таки можно синхронно написать. Через then. А что не судьба посмотреть в консоли браузера как выполняются аяксы?

Ilya
29.01.2017
21:39:03
Как раз таки можно синхронно написать. Через then. А что не судьба посмотреть в консоли браузера как выполняются аяксы?
Все через then. Но при этом происходит дичь. 2 запроса, но первый не возвращается, пока не завершится второй. Обернул второй в $timeout, теперь этого нет, но ведь так не должно быть и без $timeout!

Google
Ilya
29.01.2017
21:59:42
Просто магия(

Виктор
29.01.2017
22:09:03
Может и не дичь, а например $q.all()

А вообще аякс на каждый элемент списка или чего там - скорее всего - плохая архитектура приложения

А кстати, сервер точно может параллельно 2 запроса с 1 клиента обрабатывать?

Ilya
29.01.2017
22:13:49
400-600мс против 140-250мс

Виктор
29.01.2017
22:25:11
Ну не может просто так быть 2 аякса синхронно, написано значит так)

Sergey
29.01.2017
22:56:22
Уже от этого избавился, но $http все еще уступает $.get в 2 раза
ты там может сатану из интерцепторов какую устроил?

ну и больше похоже на то что ты реально отправляешь два запроса последовательно через промисы

а не паралельно

(

грустный кот

Ilya
29.01.2017
22:59:23
есть такое

Sergey
29.01.2017
22:59:30
подавить.... брюзжание... про то... что есть сервисный слой.... компоненты... controller as...

Ilya
29.01.2017
22:59:33
в 2 ночи все бывает

Sergey
29.01.2017
22:59:44
а второй запрос то где?

Ilya
29.01.2017
22:59:57
каждый чих в сервис выносить?

Sergey
29.01.2017
23:00:04
да

каджый маленький самодостаточный чих

SRP и все дела

Ilya
29.01.2017
23:00:25
:(

Sergey
29.01.2017
23:00:27
но это мы не об этом сейчас

Страница 104 из 325