Задать вопрос
  • Как сделать авторизацию вебсокет сервера на сервере php?

    dasha_programmist
    @dasha_programmist
    sevic, насколько помню суть кук в том, что по умолчанию они отправляются на сервер при любом запросе, даже если это картинка. Ясно, что можно при fetch рулить через credentials
    Отвечая - да, обе отправляешь, обе приходят или обе удалены
  • Как сделать авторизацию вебсокет сервера на сервере php?

    dasha_programmist
    @dasha_programmist
    sevic, в серьезной разработке практически нет одного/двух "правильных" решение. Все зависит от проекта/команды/возможностей средств. Все стандарты - это просто формальность.
    JWT - модель хранения информации или модель данных (можно придумать свое шифрование/сессии/что угодно), просто уже куча готовых либ и более менее известно "всем"
    Куки/локальное/сессионное/внутри стора приложения - место хранения токенов/сессий (модели данных) на клиенте для оптимизации дальнейшей их передачи при каждом запросе
    oAuth/Basic/другие правила - это способ договориться о выдаче токена и авторизоваться.
    К чему это я - просто структурировать понятия и разложить в голове, с другой стороны по этим трем фронтам никто не мешает сделать какие угодно "велосипеды", как у ВК например.

    Теперь по рефрешам:
    Access JWT Token имеет поле exp в него можно записать unix timestamp метку о том, когда же этот токен истечет.

    SPA
    тут отталкиваемся сколько живет токен секунды/минуты/часы/сутки и в зависимости от этого выбираем интервал проверки на клиенте
    setInterval(()=>{
    /*
    1й момент - честные access token
    проверяем если до exp осталось меньше минуты/скольки то секунд (от интервала и времени токена отталкиваемся), то делаем запрос на сервер с refresh
    2й момент - черные списки
    стандарт не предусматривает возможности "обнулить токен" на других устройствах или еще где-то, например когда ты меняешь пароль или просто хочешь чтобы все токены протухли, НО
    можно реализовать на сервере в быстром хранилище (redis) черные или белые списки с токенами (при выдаче заносить с временем экспирации) и уже строить логику на сервере и проверять не только сигнатуру (что подписан тем же сервером) но и нахождение в черном списке. Нужно ли это проверять тут в setInterval не скажу - зависит от приложения
    */
    }, /* обычно раз в 10-60 секунд*/);


    Что касается WS: сложнее, потому что можно внутри setInterval или рвать соединение и коннектить с новым токеном или на сервере при выдаче токена продлять метку жизни соединения. Тем не менее при установке соединения на сервере стоит ставить метку до какого времени можно оставаться подключенным и в каком-то общем потоке раз в минуту пробегаться по всем соединениям, проверять и обрывать если что

    НЕ_SPA
    Тут проще, посколько у тебя каждый запрос к серверу и так должна проверяться валидность токена (сигнатура/время жизни), это реализуют в middleware и в либах jwt как правило для серверной стороны эти проверки уже реализованы. Это, кстати, логично и для ajax запросов с клиента, эти запросы тоже проходят через jwt middleware. Просто в случае SPA мы как бы явно делаем оптимизацию тем, что если заведомо еще на клиенте предполагаем что токен невалиден, то не делаем с ним запрос, а вместо этого перед этим делаем рефреш.

    Отвечая на вопрос о cabinetController, это же контроллер серверный? В таком случае он не должен выставлять куки протухшие. Логика такая:
    1) пришел запрос на контроллер с двумя куками: access, refresh
    2) если access == ok выставляем старый access, refresh
    3) если access != ok проверяем refresh, если refresh == ok то на серверной стороне получаем новый access и refresh по существующему рефрешу, не надо получение вести через клиента - это будет оверхэд, если можно на сервере сделать
    выставляем новый access, новый refresh
    4) если refresh != ok , шлем куки на удаление access, refresh таким образом в этом кейсе контекст авторизации будет "неавторизован"
  • Как добавить новый key value в JSON?

    dasha_programmist
    @dasha_programmist
    linuxoid_inrus, ты забыл код структуры закинуть сюда!
    там обязательно надо настроить тэги `json:"id"` типа такого, иначе имена не совпадают. короче код нужен, чего гадать
  • Как в переменную PATH задать два значения?

    dasha_programmist
    @dasha_programmist
    добавлять через точку с запятой по примеру как у тебя ниже в переменной
  • Как сделать авторизацию вебсокет сервера на сервере php?

    dasha_programmist
    @dasha_programmist
    sevic, например та же oauth позволяет bearer токен получать через query parameters, поэтому можно делать как-то так /ws?access_token=token

    как получить: при рендеринге тела страницы на сервере, читается кука и вставляется куда-то в сериализованный state, как и другая инфа при классическом server side rendering
  • Какой алгоритм выбрать?

    dasha_programmist
    @dasha_programmist
    не проще все на timestamp'ах считать?
  • На чем пишут тесты на проектах Node.js?

    dasha_programmist
    @dasha_programmist
    тут больше вопрос про какие сервисы идет речь и что в них надо тестировать?
    если это функции - то скорее идет речь о юнит тестах
    если это graphql - то скорее идет речь о снапшотах и куда их писать/читать и т.д

    это так... информация, которая тебе пригодится для уточняющего запроса в гугле ;)
  • Нужны ли эти знания по react/redux?

    dasha_programmist
    @dasha_programmist
    testDevUa, зависит от компании, те кто держат тренд - да, лучше на хуках, код лаконичнее и короче
    но с классическим подходом нужно таки будет хотя бы разобраться, чтобы понимать код других библиотек или легаси код. Задачи обновления кодовой базы никто не отменял
  • Нужны ли эти знания по react/redux?

    dasha_programmist
    @dasha_programmist
    а чего учить то? это недели займёт?
    понять подход - час, потренироваться на задаче - день
    для общего развития стоит ознакомиться
  • Как сделать авторизацию вебсокет сервера на сервере php?

    dasha_programmist
    @dasha_programmist
    куки должны быть подписаны ключом, который хранится только на сервере
    при каждом обращении с этими куками нужно проверять валидность токена с помощью этого ключа
  • Почему получаю [object Object] вместо данных?

    dasha_programmist
    @dasha_programmist
    а где render кода jsx чтобы его вставлять?
  • Ошибка в qiwi api node js. Что делать?

    dasha_programmist
    @dasha_programmist
    tlopster1, это уже надо внутрь отлаживаться, в них вполне могла либа устареть или они что-то не обрабатывают или по дефолту какие-то не те заголовки шлют, короче лучше руками + axios/unfetch слать такие вещи
  • [Updated] Жива ли связка protobuf + go + grpc?

    dasha_programmist
    @dasha_programmist Автор вопроса
    Владислав Фурсов, Маршалить мне требуется уже в приложении, когда нужно в redis сохранить массив []byte
  • Ошибка в qiwi api node js. Что делать?

    dasha_programmist
    @dasha_programmist
    tlopster1, как и говорю, пробуй сам запрос сделать и смотри на ответ от их сервера, без SDK и библиотеки, думаю что получится
  • [Updated] Жива ли связка protobuf + go + grpc?

    dasha_programmist
    @dasha_programmist Автор вопроса
    Владислав Фурсов, без версий нет смысла обсуждать что-то, мои версии выше:
    // protoc-gen-go v1.25.0
    // protoc v3.13.0

    тогда задам вопрос по-другому:
    я правильно пишу код сериализации?
    proto.Marshal(payload.ProtoReflect().Interface())

    proto - это пакет "google.golang.org/protobuf/proto"
    payload - это мое сообщение которое сгенерировано кодогенератором
  • [Updated] Жива ли связка protobuf + go + grpc?

    dasha_programmist
    @dasha_programmist Автор вопроса
    спасибо за ответ, у тебя старая версия, на старом компиляторе/генераторе у меня тоже связка работала
    потребовалось сериализовать сообщение в байты и обратно и вот тут началось
    proto.Marshal хочет видеть один тип, а генерируется совершенно другой
  • Ошибка в qiwi api node js. Что делать?

    dasha_programmist
    @dasha_programmist
    tlopster1, на вопрос "что ответила" ты отвечаешь "не помогла", что конкретно сказали?

    подбирать запрос через обычный curl/postman мне кажется дело в заголовках или в Content-Type там как правило полный бардак
  • Ошибка в qiwi api node js. Что делать?

    dasha_programmist
    @dasha_programmist
    что тех поддержка по поводу валидности токена ответила?
  • Из-за чего скачки времени обработки запросов?

    dasha_programmist
    @dasha_programmist
    Виктор Таран, у нас на виртуалке тоже было типа NVMe общее
    вот такие проблемы)