Sergey
Что вы там храните и как она эволюционирует в процессе
Igor
Ок, спасибо
Stas
Всем привет, ребят, подкиньте идею. Если у юзера истёк срок токена, его нужно обновить, разлогинить, сообщить ему что перезашел, просто запретить доступ?
Stas
Ну я думаю на недельку поставить
Sergey
Тогда нет проблем наверное и логин показать
Stas
Понял, спс
Sergey
Но неделя это очень много, смысл токенов пропадает же
Sergey
Хотя это в принципе всё условно. Я не особо понимаю вектор атаки от которой спасает рефреш токен при обычной авторизации с логином паролем
Sergey
https://m.habr.com/company/voximplant/blog/323160
Sergey
Там если комменты почитать, то видно что не один я такой
Stas
Ок, посмотрю, спасибо
Sergey
Я посмотрел и расстроился. Только я подумал что наконец-то понял как оно работает, буквально на днях дотнекст по теме смотрел. И оказывается нет, нихрена, жизнь боль!
Stas
А если токен не просрочен, его лучше обновлять?
Sergey
https://auth0.com/docs/api-auth/tutorials/silent-authentication
Sergey
Вот там они отвечают на вопрос «как»
Sergey
Но не «когда»
Sergey
Я в интерцепторе ловлю 401 и на первом запускаю рефреш запрос. И пока он бежит собираю поступающие запросы в массив промисов, который пуляю если удалось обновить с новым токеном
Sergey
Если по таймеру рефрешить, я так понял ты это хочешь, то могут быть запросы которые обломятся пока токен обновлялся
Sergey
И юзера от этого может на логин выкинуть
Sergey
А мы это не хотим
Sergey
Проблема только в том что у меня это говно глючит ибо слишком много логики
Sergey
Но это вопрос извлечения рук из жопы скорее
Rem1te
Sergey
А то у меня получился циклический рефреш, было стыдно)
Igor
кто подскажет норм tutorial типа этого https://medium.com/@levifuller/building-an-angular-application-with-asp-net-core-in-visual-studio-2017-visualized-f4b163830eaa только с javaScript или просто подобный, может с другой стороны если подойти, будет понятнее
Данияр
Кто может подсказать, есть ли библиотека для реализации авторизации посредством 4-значного пин кода ?
Данияр
Rem1te
реализуйте сами
Данияр
Мм ок
wrodzko
Ребята, подскажите, правильно ли поступаю, когда разделяю config, controller, template, service по разным файлам? Дело в том, что использую $stateProvider и выходит, что в конфиге есть логика загрузки данных в resolve. Хотелось бы вынести это в контроллер, типа NameCtrl.resolve = {}; а потом в конфиге resolve: NameCtrl.resolve. Но контроллер находится в другом файле и доступ из конфига я к нему не имею. Попробовал прокинуть посредствам DI, но вылетает ошибка: "Unknown provider". Помогите, пожалуйста, разобраться, что я делаю не так.
Sergey
А зачем вы вообще так делаете? У ui-router есть resolve, он в контроллер инжектит
Sergey
Или у вас дефолтный роутер?
wrodzko
Да, инжектит.
Но из контроллера не понятно, как получаются заинжекченные данные.
К примеру, в контроллер приходит что-то типа 'users'. Что это за юзеры? Откуда они берутся? Из контроллера я не могу узнать эту информацию. Приходится идти в конфиг и там будет resolve: { users: userService => userService.getUsers(); }
Sergey
А зачем контроллеру знать откуда юзеры? У вас di чтобы как раз не знать
wrodzko
Было бы клево видеть такие вызовы внутри контроллера. И тогда, легко можно было бы понимать, что это за юрезы инжектятся
wrodzko
Ну, самому контроллеру пофигу. Он как получал юзеров, так и будет получать их через DI. Тут дело просто удобочитаемости.
Sergey
Ну инжектите сервис тогда)
Sergey
Тогда все вызовы на виду будут
wrodzko
Насколько я понимаю, суть resolve в том, чтобы не переходить по роуту до тех пор, пока не будут готовы все данные. А, если инжектить напрямую сервис в контроллер, тогда я потеряю эту самую фишку)
wrodzko
И будут на странице мерцания, когда темплейт отрисуется пустым, а затем подгрузит данные и отобразит
Sergey
Ну вы сами сложности ищете, а потом удивляетесь)
Sergey
Я пока так и не понял как это должно выглядеть, что должно быть в контроллере? Промис из сервиса? Либо ваши данные сами должны и содержать список и методы для работы с ним
Sergey
Или инжектить данные и методы работы с ними отдельно
wrodzko
$stateProvider.state('state', {
resolve: MainCtrl.resolve
}
------------
function MainCtrl (users) {
this.users = users;
}
// create the resolved property
MainCtrl.resolve = {
users: function (UserService) {
return UserService.getUsers();
}
};
wrodzko
Что-то вроде этого мне бы хотелось реализовать.
Sergey
Ну я примерно так и делаю, в маршрутизаторе умный компонент, который потребляет сервисы, а он уже пробрасывает биндинги тупым компонентам которые могут только отображать и дергать колбэки
Sergey
То есть тупой компонент вообще без понятия откуда данные и что с ними происходит, всё через биндинги
Sergey
{
name: "app.users.add",
url: "/add",
template: [
"<users-list",
"users='$ctrl.users'",
"on-user-add='$ctrl.addUser(user)'",
"on-user-remove='$ctrl.removeUser(userId)'
"on-user-update='$ctrl.updateUser(user)',
"></users-list>"
].join(" "),
controller: [
"users",
"usersService",
function (
users: User[],
usersService: UsersService): void {
this.users = users;
this.usersService = usersService;
this.addUser = (user:User) = {
......
}
......
}],
controllerAs: "$ctrl",
resolve: {
users: [
"usersService",
(usersService: UsersService): Promise<User[]> => {
return usersService.getUsers();
}],
},
ncyBreadcrumb: {
label: "Users"
}
},
Sergey
Вот что-то в таком духе
Sergey
Контроллер инлайновый или нет - по вкусу
Sergey
Это не то?)
Igor
Что вы там храните и как она эволюционирует в процессе
У меня тут есть догадка, подскажите правильно ли я думаю. Смотрю видео урок от ITVDN рассказ про наследование контроллеров. и как я понял что если в головном контроллере определить поле ссылочного типа, то оно будет обновляться независимо от того в какой из дочерних деректив его меняли. и получается мне надо объявить такое поле на основной странице и использовать его в двух моих дочерних директивах?
Igor
это для того чтоб при добавлении записи о социальной сети, в другой дерективе появлялась иконка
Igor
или как то использовать переменную $rootScope
Sergey
Вам нужен или store или порождать событие
Sergey
@jashka_jashka показывал как-то свою библиотеку для организации сторов в нг1
Sergey
Может быть вам это подойдёт
pa[aad
https://github.com/Insidexa/jstore
вот оно
используется rxjs, правда скорее оно не подойдет ибо порог входа возростает с rxjs
Sergey
Я просто не понимаю где там возникает затык))
Sergey
@IgPod вы может в песочнице типа plunkr продемонстрируете проблему?
Sergey
Наследование контроллеров звучит как очень старые туториалы с толстыми контроллерами
Sergey
Но может быть у вас там так и надо, не знаю
Igor
не сейчас не покажу, но я нашел для себя такую штуку
$rootScope.$broadcast("e_Event_changeProfileSocials", editSocial.model); - это в одной директиве при редактировании соц сетей
$scope.$on("e_Event_changeProfileSocials", function (event, socials) {
viewHrProfile.profile.FacebookURL = socials.FacebookURL;
viewHrProfile.profile.LinkedinURL = socials.LinkedinURL;
viewHrProfile.profile.TwitterURL = socials.TwitterURL;
viewHrProfile.profile.GooglePlusURL = socials.GooglePlusURL;
viewHrProfile.profile.InstagramURL = socials.InstagramURL;
}); - это в другой директиве, где отображаются иконки. проверить сейчас не могу, тим лид на выходные доступ перекрывает
Sergey
Ну это если директивы вообще никак не связаны
Igor
у нас тут просто в одном месте так и сделано, так что думаю взлетит)
Sergey
Окей)
Igor
завтра скажу результат
Sergey
Да будет всё работать. Тут вопрос архитектуры. Если у вас так принято, то почему нет.
Igor
дрйгой вопрос, если у меня на форме стоит ng-if="viewHrProfile.profile.FacebookURL" он подхватит изменения в модели? или надо ng-if*="viewHrProfile.profile.FacebookURL" или ng-if={{viewHrProfile.profile.FacebookURL}}
Igor
в примере что у нас в проекте есть изменение через event но там переменная на html лежит как {{viewHrProfile.profile.Status}}
Sergey
Sergey
Первый вариант будет работать
Sergey
Если в области видимости такое есть и оно обновится соответствующим образом
Igor
pa[aad
шо за нашествие ботов
Oleg