
Stas
08.08.2018
12:12:10
PHP Laravel
Слушай, я тут заметил одну штуку, нода спокойно раскодирует любой jwt, но там при раскодировке используется секрет, а в angularjs нет, может быть в этом проблема?

Andrey
08.08.2018
12:14:07

Remite
08.08.2018
12:14:45
Извините пожалуйста, а зачем Вы пытаетесь раскодировать jwt на фронте?

Andrey
08.08.2018
12:15:14
Теперь и я так думаю зачем, не обратил внимание

Google

Stas
08.08.2018
12:16:05

Remite
08.08.2018
12:16:25
Зачем я имел введу не последствия, а причину для чего вообще Вам это понадобилось

Stas
08.08.2018
12:17:23

Денис
08.08.2018
12:17:36

Andrey
08.08.2018
12:17:50

Remite
08.08.2018
12:17:53
Зачем jwt используется я понимаю
Зачем Вам это на фронте?

Stas
08.08.2018
12:19:05
пробовал тащить из базы, но моему глазу было видно эти пол секунды, когда имя не отображалось

Remite
08.08.2018
12:19:42
в jwt может хранится важная информация типа id
и если Вы позволите фронту и соответсвенно пользователю знать как декодить Ваш токен - смысла в токене тогда нет.

Stas
08.08.2018
12:20:18

Remite
08.08.2018
12:20:23
Кто угодно сможет его подделать

Google

Remite
08.08.2018
12:20:32
Ну а рядом с jwt пришлите имя, и все
jwt не для пользователя, это Ваша подпись.
Что бы Вы как разработчик БЕ были уверенны что пришел нужный человек и не более

Stas
08.08.2018
12:21:38
я задумался что я могу сделать запрос на бэк, не в бд, там раскодировать и вернуть, поидее это должно быть быстро и безопасно

Remite
08.08.2018
12:21:40
Сделали авторизцию
вернули
{
access_token: '',
refresh_token: '',
username: '',
}
и все
Зачем делать отдельный запрос, если у Вас и так в методе генерации ответа на авторизацию есть переменная с именем которую вы скармливаете в шифрование

Stas
08.08.2018
12:23:40

Денис
08.08.2018
12:23:44
процедура раскодирования может еще понадобится для выяснения даты истечения срока действия jwt.

Stas
08.08.2018
12:24:02

Remite
08.08.2018
12:24:14

Stas
08.08.2018
12:24:33

Remite
08.08.2018
12:24:49
Сделали запрос на получения данных
Получили 403 с сервера
Узнали что у вас просрался токен
Переполучили токен
если все успешно пошли за данными
Проблемы индейцев шерифа не ебут
У каждого свои проблемы и нет смысла смещать логику

Денис
08.08.2018
12:25:19

Remite
08.08.2018
12:25:38

Денис
08.08.2018
12:26:08

Remite
08.08.2018
12:26:12
Вы можете просто самому себе записывать дату когда вы рефрешнули токен, и все. Но опять же завтра на беке в конфиге поменяют время протухания с 7 минут на 4 и Ваша запись не будет иметь толку
Почему же? Что тут такого непрактичного вы увидели?
jwt токен для фронта ето просто строка, и не более того. Он не должен знать как с ней работать и что из неё можно вытащить и куда положить
Он просто знает что это какая-та херня которую надо дать серверу что бы он не ругался
А уже сервер принимает решение пора рефрешить токен пользователю или нет

Google

Stas
08.08.2018
12:28:34
где ты раньше был)

Remite
08.08.2018
12:29:14
Да вот работаю, занят был :)
А тут смотрю уже пол тысячи сообщений не прочитанных в чате, аж удивился

Денис
08.08.2018
12:31:02
Если посмотреть на ту же либу angular-jwt(новый анг), то под капотом она как раз декодирует токен.

Stas
08.08.2018
12:32:54

Remite
08.08.2018
12:33:27
Если Вы считаете что нужно делать иначе - делайте

Stas
08.08.2018
12:33:42

Remite
08.08.2018
12:34:28

Stas
08.08.2018
12:35:23
но по поводу имени согласен, можно просто отдельной строкой записать

Денис
08.08.2018
12:37:07
Если Вы считаете что нужно делать иначе - делайте
Мне не чуждо чужое мнение. Просто вы выводите его как правило, что фронт не должен. Честно скажу, в криптографии не силен. Но при декодировании токена, тебе не нужен какой либо ключ. Следовательно, я могу просто взять эту строку и декодировать известным мне алгоритмом. Из этого вытекает, что содержимое токена не защищено от утечки.

Remite
08.08.2018
12:39:26

Денис
08.08.2018
12:39:33
Если верить той-же вики, то "к заголовку и полезной нагрузке применяется алгоритм кодирования Base64-URL". Следовательно, полезная нагрузка это те данные, что фронт может спокойно декодировать и использовать без какого-либо ущерба для безопасности

Remite
08.08.2018
12:40:03
А вот если у человека непосредственно проблема с декодированием на фронте, то наверно он этот ключ все таки использует.
И наверно что бы декодировать данные на фронте ему нужен ключ
Ой, а если мы кинем ключ на фронт любой человек сможет его подсмотреть в сорсах...
упс

Stas
08.08.2018
12:40:37

Google

Денис
08.08.2018
12:41:15
тогда извиняюсь, это действительно проблема. Ключи не стоит перекидывать на фронт. Я имел ввиду, что если он хочет перекидывать какую либо нагрузку в токене, то это нормальная практика.

Remite
08.08.2018
12:41:57
я брал свой jwt, кидал в декодировку на jwt.io, он показывал всю инфу payload
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImp0aSI6IjhlNjcyMzYzLTNmY2YtNDdlMi05NWM1LWNiMzc1ZDk3M2JmYSIsImlhdCI6MTUzMzczMTg4MCwiZXhwIjoxNTMzNzM1NDgwfQ.h5gk5aVIYACsxQhczBpkezTBDpL69NouK8yDu62a_gI
у меня не может его полность разобрать на сайте https://www.base64decode.org/

Денис
08.08.2018
12:43:35

Stas
08.08.2018
12:47:51
Ну так и в чем у вас возникла проблема?
Моя проблема была в том что на фронте не декодировало русскоязычные имена, но пожалуй я переделаю, только пока еще не решил как, либо буду отдельно имя юзера писать, либо буду делать запрос на декодировку jwt на бэк (и верну имя и заодно обновлю дату)

Valera
08.08.2018
12:59:22
Привет
Кто может подсказать, как отловить букву, которая вводится и заменить её на другую до попадания в input?

Admin
ERROR: S client not available

voix
08.08.2018
13:14:14
onkeydown event, в колбеке уже проверяй и меняй

Stas
08.08.2018
13:57:00
немного офтопа: подскажите как сделать что бы при выполнении условия выходило сразу с метода а не только с цикла
isHasReservation(addons){
if(addons.length > 0){
addons.forEach(addon => {
if(addon.reservation_accommodation.reservation !== undefined){
return true;
}
});
}
return false;
}

Константин
08.08.2018
14:00:43

Valera
08.08.2018
14:06:22
Кто-то сталкивался с подобной проблемой?
Есть input type="email"
Ввожу "qwwe@" и дальше любой кириллический символ
В scope вот такое попадает: "qwwe@xn--e-sub"
Нужно написать директиву, которая будет заменять всю кириллицу в поле на латинницу, например й=>q
Но все время подставляются вот эти "xn--"

Alexander
08.08.2018
15:26:06
директива => слушаешь keydown => заменяешь на что нужно

Valera
08.08.2018
18:54:43
директива => слушаешь keydown => заменяешь на что нужно
так и делал
при keydown беру значение input и меняю всю кириллицу на латинницу
но при keydown в этот input сначала попадает та самая кириллица, а только потом она заменяется:
https://www.screencast.com/t/Ot3sTXRgy906
и вот в тот момент, когда в input попадает кириллица всё ломается:
https://www.screencast.com/t/rVgJEDG3Qu

Alexander
08.08.2018
18:56:52
Запили это в песочнице плес

Bako
08.08.2018
20:13:55
$scope это локалный элемент внутри контроллера и другие контроллеры не имеют к нему доступа или это общий котлован? просто, я даю имя значение, если значение где-то в родителя записано, то child нечаяно менять его значение .

Константин
08.08.2018
20:27:10
В чем вопрос?

Bako
08.08.2018
20:43:58
Нет, вы не так поняли. Я про не прямой доступ элементу(без интерфейса) по адресной памяти к элементу. Типо, элемент меняется, но в другом конце кода без интерфейса. У меня несколько раз повторялся этот баг

Remite
08.08.2018
20:53:49

Google

Bako
08.08.2018
21:02:42
ЧО?
Перечитайте проблему mutation objects https://medium.com/@fknussel/arrays-objects-and-mutations-6b23348b54aa
Вот это проблему наблюдаю в AngularJs в $scope

Remite
08.08.2018
21:06:18
Окей, да я в курсе про мутабельность и имутабельность, но почему для Вас это ПРОБЛЕМА? Это естественный ход вещей.
Я переспросил потому что совершенно не понял Ваш вопрос, а не потому что не в курсе за мутабельность :)
Я не понял в чем у Вас проблема :)

Bako
08.08.2018
21:06:41
лол
вы что-то путаете
Я про мутация(mutation) обьекта говорил, а не про изменяемый(mutable) и неизменяемый(immutable) обьекты

Remite
08.08.2018
21:10:33
-_-

Bako
08.08.2018
21:10:39
https://poanchen.github.io/blog/2017/06/13/mutable-vs-Immutable-object-in-JavaScript

Remite
08.08.2018
21:11:00
Мне нечего Вам сказать, я пытаюсь у Вас уточнить суть Вашего вопроса, а Вы уходите в другую степь

Bako
08.08.2018
21:13:45
Мне тоже нечего сказать, вы путаететесь в основах парадигмы ООП . Поэтому, не поняли суть вопроса.

Remite
08.08.2018
21:17:14
Вы путаете парадигму праграммирования ООП
И паттерны программирования мутейбл/имутейбл
И ни какого отношения ООП к этим паттернам не имеет, ну за исключением того что речь идет о сущностях

Bako
08.08.2018
21:25:09
Давайте сначало, я в последнее время часто нахожу проблему в $scope с несколько контроллерами внутри, где child controller может нечаяно поменять значение у parent controllerа, если название значение одинаковый у обоих, но при этом $scope у всех контроллеры раздельные. Это странный баг называемый mutation objects и не разу НЕ упоминал immutable/mutable. Это вы взяли с воздуха.

Remite
08.08.2018
21:28:50
Довольно странное поведение при условии того что каждый скоуп это отдельный обьект с ссылкой на родителя
Хотелось бы примерчик если можно

Bako
08.08.2018
21:35:23
Примерчик в своем ситуаций не могу показать, но могу показать легкий пример как ведеть себя mutation object