• Как сделать модальное окно на nuxt.js через bootstrap api?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Первым делом так сделал, через ref
    Но ничго не изменилось, ошибки те же самые
  • Как уменьшить количество запросов?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    те я для каждой записи в БД дергая 2 запроса, причем 1ин из них всегда одинаковый
    а второй отличается только один id-шником в where
  • Как обновлять токены авторизации для нескольких устройств?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    единственное что
    если храним с рефрешем еще и фингерпринт
    то если у нас хакер крадет токены и пытается обновить их
    то его фингерпринтбудет другой. а мы сверяем строго рефреш + фингерпринт
    и мы ему ничего не выписываем и сразу обрубаем. те он пользуется тлоько 15 минут нашим аксесом, больше преимуществ нет, или они есть?

    с условием что в playload аксеса у нас только user_id и больше никаких данных

    единственное что смущает - храннеие рефрешев, получается для 1ого клиента мы храним все его страые рефреши, которые каждые 15 минут обновляются, а если клиентов будет 100к и каждые 15 минут 100к записей в БД новых (новые рефреш + старые рефреш)
  • Как обновлять токены авторизации для нескольких устройств?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Rsa97, я верно понимаю что фингерпринт не нужен вообще?
    даже если несколько устройств, ведь для каждого "входа" сервер и клиент имеет рефреш токен и он однозначно определяет сессию?

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

    1) клиент логинится получает пару токенов (рефреш хрнаим в базе)
    2) клеит юзает сой аксес и обновляет свою пару через рефреш (мы а базе рефреш старый помечаем использованный, создаем новый рефреш когда он нам прилетает)

    никаких фингерпринтов, даже если будет 10 устройств - они пересекаться не будут

    Допустим хакер крадет и рефреш и акксес
    1) ходит с акксес токеном
    2) рефрешит его (мы в базе старый помечаем использованным) новый ему даем
    3) клиент юзает сой рефреш м по бзе видим что он у нас уже использованный - выходим отовсюду. те удаляем рефреш токены

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

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Rsa97, Хм, предложенный вами подход самый удобный из всех что я нагуглил\напридумывал, спасибо, надо будет над этим подумать
  • Как обновлять токены авторизации для нескольких устройств?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Rsa97 верно, у меня нигде противоположного не сказано

    украли токены
    с их помощью обновили и получили новые

    клиент уже не может обновить свои (его рефреш затер злоумышленник) и его "разлогинивает" так скажем, а злоумышленник продолжает сидеть в учетке настоящего клиента
  • Какая верная стратегия обновления refresh_token'а для нескольких устройств?

    unroot
    @sergey-gornostaev

    1) В базе у нас есть таблица
    user_id, fingerprint, refresh_token, exp_at
    те строка соответствия id юзера, какого-то ключа устройства (фингерпринт) и сам рефреш-токен с датой валидности

    2) злоумышленник украл наши токеныи шлет запрос на обновление токена (шлет ведь сразу оба токена?)
    из access_token мы получаем (user_id + fingerprint), хоть он и просрочен
    смотрим рефреш токен в базе
    те ищем строку user_id + fingerprint + refresh_token
    есть такая строка (логи нашего настоящего клиента ее туда поместил)

    3) для злоумышленника генерируем новый аксес-токен и новый рефреш-токен обновляем в бд запись
    user_id + fingerprint + refresh_token
    злоумышленник всем этим прекрасно пользуется неограниченное время

    4) наш пользователь аналогично пользуется своим аксес-токен, но он у него заканчивается и он шлет запрос обновления

    5) мы в базе ищем его рефреш токен
    user_id + fingerprint + refresh_token
    и не находим, так как его обновил наш злоумышленник со соим фингерпринт, используя ранее украденные токены

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

    Что-то я н понимаю, подскажите пожалуйста где ошибка?
  • Как правильно хранить состояние между клиентом и сервером (php + node)?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    ThunderCat Спасибо

    Правильно ли я все понял касательно API магазина для сайта и мобильного устройства

    Если клиент не авторизован и заходит на сайт\приложение
    • 1.1) просматривая товары и другие страницы дергаются только GET запросы и никаких токенов пока не нужно (за исключением личного кабинета)
    • 1.2) как только неизвестный клиент кладет товар в корзину, я создаю в базе информацию и генерирую например JWT токены (access\reresh) и передаю их на клиент (клиент у себя их как-то хранит и c этого момента access в заголовке всегда мне отдает)
    • 1.3) по заголовку я всегда знаю, что сессия с клиентом не закончилась и легко получаю всю его корзину, избранные, недавно просмотренные и тп из своей бд\redis
    • 1.4) как только он логинится\регается, я в бд записываю его id (в таблице с корзинами заполняю поле user_id чтобы знать чья это корзина), но передавать он мне попрежнему access продолжает, который ранее получил, положив самый первый товар в корзину


    Если клиент автризован и заходит на сайт\приложение все аналогично только логика начинается с шага 1.3 тк токены у клиента уже есть и по ним я информацию могу получит

    мобильное приложение не знаю где хранит токены (наверняка там есть у них хранилище)
    а сайт (nuxt.js) хранит токены в куках

    все ли я верно понял и можно реализовывать по такой схеме? она верная и используется?
    Хочется написать правильно, чтобы другим людям (фронтендшиками и мобильным разработчикам) се было понятно и удобно, те сделать все по правилам
  • Как писать api на битриксе для работы с node.js фронтендом\мобильным api?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Кирилл Горелов, c php все прекрасно, сейчас вытаскиваю из MVC парадигмы битрикса шаблоны template.php
    и переношу на проект с nuxt.js, соответственно этот проект - это отдельный сервер с отдельным репозиторием, преследуются цели:
    1) создание 2ух ответственностей: фронта и бека и как следствие 2ух команд (с 2мя репозиториями git), чтобы не пришлось фронтедщикам поднимать у себя весь битрикс с его базой в десяток гигов. В конце концов хочу получить 2 репы, которые ничего друг о друге не знают и общаются через api, сгенерированное тем же Swagger
    2) сайт работает с тем же api по той же документации с теми же методами авторизации что и приложение

    поэтому node.js + проект большой и я уже вижу как node.js легко и просто подгружает код кусками и даже первичное отображение стало в разы плавнее и быстрее, в отличии от рендеринга страниц, которые отдает битрикс

    php хороший и нет никаких к нему вопросов, но пока не понимаю суть вашего вопроса, вы знаете путь проще, лучше в масштабируемости и долгосрочной поддержке, которые не требует ноду и можно остаться на пхп?
  • Как обойти дерево и составить все его пути (url категорий)?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    0xD34F
    Спасибо, ваша функция работает, буду разбираться в ней!
    Подскажите как добраться до таких же навыков применения алгоритмов?
    может у вас книги есть на примере, которые дают хороший толчок?
  • Как настроить Document_root в PHPStorm?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Nick Sdk, ага, сейчас так и делаю, но не красиво и как-то неправильно кажется.
    Спрошу напрямую в пхпштормовцев тогда, спасибо !
  • Как настроить Document_root в PHPStorm?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    спасибо
    чот не помогло
  • Как связать Apple pay и сбербанк?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    Alex_Nzr, люди мне раз в 3 месяца в соцсетях пишут с этой проблемой.
    Похоже что нет, нужно просить их включить «старый кабинет» и там все настроить, потом можно уже на новый переключаться.

    А так да, от техподдержки, мучал их кучу времени, тк они ссылались на то, что я неправильно все сделал и кидали мне справку раз за разом.
  • Как написать регулярное выражение?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    edward_freedom,

    извинись – глагол, действ. зал., повелительное накл., 2 лицо, ед. ч.


    контекст
    Так что извинись и забудем


    мда...

    Спасибо за Вашу рекомендацию, обязательно все прочитаю, кстати, чтобы Ваша персона не возмущалось - описание своего профиля я сменил.

    Всего Вам самого хорошего и спасибо за времяпрепровождение, хоть Вы и не предложили абсолютно никакого положительного\полезного по сути вопроса, а именно, "Как написать регулярное выражение?"

    Закончили, задача давно решена.
  • Как написать регулярное выражение?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    edward_freedom, возможно ссылкой ошибся и висело так короткое время - не исключаю, не проверял.
    Я смотрел на сообщение, а на ссылку даже не нажимал и сообщение (== текст ссылки) не менялось 100% и было рабочим изначально.
    p.s: не заставляйте никого извиняться перед вами пожалуйста, это выглядит очень глупо.
  • Как написать регулярное выражение?

    PankovAlxndr
    @PankovAlxndr Автор вопроса
    edward_freedom,
    в вашем скриншоте первая ссылка моя - из тела МОЕГО сообщения(вопроса) - ее сделал Я, а не Эдуард,
    а Эдуард опубликовал вторую версию, отредактировав мою регулярку, которую я скидывал как пример.
    взял МОЮ(v1) неверную регулярку и доработал(v2) - его сообщение в виде регулярного выражения точно не менялось и я это подтверждаю.