Задать вопрос
  • Как правильней хранить и обновлять JWT для аутентификации?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Каждый JWT-токен это три блока - заголовок, полезная нагрузка и подпись. В заголовке хранится информация о самом токене (срок жизни, алгоритм подписи). Полезная нагрузка - информация приложения. Подпись - зашифрованный хэш первых двух частей. В распределённых системах выдавать токен может сервер авторизации, а использовать любой другой сервер. В таком случае подпись может быть асимметричной, закрытый ключ для подписания, открытый для проверки.

    Токены выдаются парой, рабочий + обновления.

    Рабочий токен выдаётся на короткое время (минуты - десятки минут). Внутри содержится срок окончания действия токена, идентификатор пользователя, его права, какая-то информация для минимизации обращений к БД по данному пользователю. Токен на сервере не сохраняется.

    Токен обновления выдаётся на длительное время (часы - дни). Внутри содержится срок окончания действия токена и идентификатор пользователя для автоматической аутентификации. Токен обновления (или его идентификатор, если он есть в токене) хранится в БД вместе с идентификатором пользователя.

    1. Клиент аутентифицируется/авторизуется на сервере со своим логином/паролем.
    2. Сервер генерирует пару токенов, короткоживущий рабочий и долгоживущий для обновления. Токен обновления записывается в БД.
    3. Клиент присылает запрос с рабочим токеном.
    4. Сервер проверяет токен.
    4а. Токен действительный и неистекший, сервер отвечает на запрос.
    4б. Токен действительный, но истекший, сервер сообщает о необходимости обновления токена.
    4в. Токен недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
    5. Клиент присылает токен обновления.
    6. Сервер проверяет токен, в том числе и в БД.
    6а. Токен обновления недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
    6б. Токен обновления действительный, но в БД отсутствует, сервер удаляет все токены обновления этого пользователя из БД и сообщает о необходимости входа по логину/паролю (на п.1).
    6в. Токен обновления действительный, но просроченный, сервер удаляет этот токен из БД и сообщает о необходимости входа по логину/паролю (на п.1).
    6г. Токен обновления действительный, непросроченный, в БД присутствует. Сервер удаляет этот токен из БД, генерирует новую пару, записывает новый токен обновления в БД и отправляет токены клиенту (на п.3).
    Ответ написан
    Комментировать
  • Как правильней хранить и обновлять JWT для аутентификации?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ваш токен это просто шифрованная строка и всё. Таблица под токены тоже должна быть простая, id, token и id юзера (Или кого-то другого, кому он принадлежит). Далее вы получаете откуда-то этот токен, а так же должны получить данные, кто его отправил.

    Для примера, у вас юзер будет переходить куда-то по этому токену и он будет отображаться в url.

    Далее вы проверяете id юзера (Или кого-то другого) и сам токен. Теперь делаете вывод, правильный ли токен был передан по url.

    Другая ситуация, когда у вас нет id юзера а есть просто токен. Тогда вы можете по БД проверить, какой юзер ДОЛЖЕН был перейти по этому токену.

    Воспринимайте токен как пароль
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Неверно поняли.

    Разве не видели никогда в продаже матерей с разводкой, но без распаянных элементов? Сделать чуть больше мать и дать пустовать месту дешевле, чем делать две матери с более плотной компоновкой (когда счет идет на миллионы штук).

    Так и здесь. Кристаллы идут с одного и того же источника. Только некоторые "первого сорта" - и они будут i7, а некоторые - "второго" - и они будут i5. Там нет "больше-меньше", там есть только кристаллы, которые выросли получше и похуже. Стоимость производства процессоров огогошеньки какая...
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?


    Почему в i5 тогда не добавляют больше быстрой процессорной памяти или не сделают некоторые модели i7 без встроенной карты и таким же количеством ядре, но с большим кэшем

    Потому что технологический процесс такой, что младшие модели/модели без видеоядра получаются путём отключение кусков чипа из старшей модели, в которой есть всё.

    Либо видеоядро добавляется как отдельный чип.

    Делать отдельную производственную линию, чтобы получить более мощные процы без видеоядра тупо не выгодно.
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Потому что это одни и те же кристаллы. Зачем разрабатывать и производить много разных модификаций кристаллов, если можно взять один и тот же, включать/отключать некоторые блоки, заодно тем самым уменьшая общую отбраковку.

    Ведь память это же самое дешевое, что можно сделать на кристалле?

    Это как раз обычно самое дорогое - самый большой по площади регион. Больше площадь = меньше кристаллов с пластины. Больше площадь кристалла = выше риск получения брака у каждого из кристаллов. Меньше исправных кристаллов = выше стоимость каждого.
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    i5 без встроенной видеокарты, как я понял i7 со встроенной

    Поняли не правильно. И те и те есть как со встроенной, так и без нее.

    Значит в i5 больше свободного места из-за наличия меньшего количества ядер и нет встроенной карты

    Нет. Это точно такой же чип, как и i7, только "не такой удачный". Поэтому на заводе его дефектуют и отключают на аппаратном уровне неудавшиеся ядра. Ничего добавить на этом этапе в чип уже не получится.
    Ответ написан
    4 комментария
  • Как можно закодировать строку в JS?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Посмотри в сторону вот этой библы. Она и под js и под пыху есть.
    Ответ написан
    Комментировать
  • Как сделать кнопку в фиксированном положении внизу экрана до момента скролла до ее реального нахождения внизу блока?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    .btn {
      position: sticky;
      bottom: 10px
    }


    Но так кнопка будет прокручиваться только в рамках своего родителя.

    Иначе на js.
    Гуглите то же самое.
    sticky.js
    Ответ написан
    Комментировать