@angular_js

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

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

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

Google
Stas
08.08.2018
12:16:05
Извините пожалуйста, а зачем Вы пытаетесь раскодировать jwt на фронте?
О, привет. А это очень интересный вопрос, я и сам не знаю, в каком-то примере увидел (знаю в каком, но не буду распространять плохие идеи) что декодировали на фронте.

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
jwt используется как прослойка для защиты роутов апи
Ты не увидел суть как им пользоваться

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

Stas
08.08.2018
12:19:05
Зачем jwt используется я понимаю Зачем Вам это на фронте?
ааа, ну там просто есть не особо важная инфа, как имя юзера, которое мне нужно отобразить. Что бы не делать лишний запрос в бд, я его тащил из джвт

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

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: '', }

и все

Зачем делать отдельный запрос, если у Вас и так в методе генерации ответа на авторизацию есть переменная с именем которую вы скармливаете в шифрование

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

Remite
08.08.2018
12:24:14
Remite
08.08.2018
12:24:49
Сделали запрос на получения данных Получили 403 с сервера Узнали что у вас просрался токен Переполучили токен если все успешно пошли за данными

Проблемы индейцев шерифа не ебут У каждого свои проблемы и нет смысла смещать логику

Денис
08.08.2018
12:25:19
ето не головная боль фронта, это проблемы бек-енда
Проблемы бекенда - да. Но если ты хочешь рефрешнуть токен до того, как истечет срока действия. Вполне нормальная практика.

Денис
08.08.2018
12:26:08
вообще не нормальная практика, аж не разу
Почему же? Что тут такого непрактичного вы увидели?

Remite
08.08.2018
12:26:12
Вы можете просто самому себе записывать дату когда вы рефрешнули токен, и все. Но опять же завтра на беке в конфиге поменяют время протухания с 7 минут на 4 и Ваша запись не будет иметь толку

Почему же? Что тут такого непрактичного вы увидели?
jwt токен для фронта ето просто строка, и не более того. Он не должен знать как с ней работать и что из неё можно вытащить и куда положить Он просто знает что это какая-та херня которую надо дать серверу что бы он не ругался

А уже сервер принимает решение пора рефрешить токен пользователю или нет

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

Денис
08.08.2018
12:31:02
jwt токен для фронта ето просто строка, и не более того. Он не должен знать как с ней работать и что из неё можно вытащить и куда положить Он просто знает что это какая-та херня которую надо дать серверу что бы он не ругался
Где вы читали, что должен фронт, а что нет? Кто описал такое правило? Или это правило вы сами сформировали для себя? Ваша аргументация, что это просто строка и ничего с ней делать нельзя ничем не подкреплена. Сервер ее тоже как строку принимает.

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

Stas
08.08.2018
12:32:54
Remite
08.08.2018
12:33:27
Где вы читали, что должен фронт, а что нет? Кто описал такое правило? Или это правило вы сами сформировали для себя? Ваша аргументация, что это просто строка и ничего с ней делать нельзя ничем не подкреплена. Сервер ее тоже как строку принимает.
беру это заключение из собственного опыта, если Вам чуждо чужое мнение которое отличается от Вашего - это Ваше право и вы можете к нему прислушаться или нет. Но это не повод устраивать холивар и брызжать слюной. Скажу один аргумент Вы шифруете токен Отдаете его на фронт На фронте дешефруете Значит любой человек может получать системные данные которые были предназначены только серверу. Вот и вся моя аргументация.

Если Вы считаете что нужно делать иначе - делайте

Remite
08.08.2018
12:34:28
но что плохого в том что бы сделать 1 лишний запрос на сервер при входе на сайт, для декодирования?
ну плохого ничего, просто смысла в этом не вижу, ну типа вы свою строчку можете и так прислать ответом на авторизацию

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

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

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

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

И наверно что бы декодировать данные на фронте ему нужен ключ

Ой, а если мы кинем ключ на фронт любой человек сможет его подсмотреть в сорсах...

упс

Stas
08.08.2018
12:40:37
да по умолчанию jwt токен это base64, но увы и ах дла кодирования используется secret-key
я брал свой jwt, кидал в декодировку на jwt.io, он показывал всю инфу payload

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; }

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 нечаяно менять его значение .

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

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



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