Странное поведение куки в приложении ReactJS - PullRequest
3 голосов
/ 06 октября 2019

В настоящее время я работаю над сайтом объявлений, где я использую ReactJS на внешнем интерфейсе. К сожалению, сейчас у меня есть некоторые проблемы с поведением файлов cookie, поэтому я пытаюсь выяснить, где проблема, но безуспешно в течение многих дней. Проблема в том, что я использую куки, чтобы сохранить электронную почту пользователя и идентификатор пользователя в куки, чтобы проверить, вошел ли он в систему или нет. По какой-то причине иногда необходимо обновить страницу, чтобы получить электронную почту и идентификатор пользователя из файлов cookie. Вторая проблема заключается в том, что после выхода пользователя из системы, навигации по страницам и обновления сайта пользователь снова входит в систему, и я не знаю, как это происходит.

Пожалуйста, проверьте видео, чтобы увидетьошибка в действии https://youtu.be/Xrhw2Oa9_1k

Ссылка на репозиторий https://github.com/tourniquet/classified-frontend-react

Кроме того, если есть несколько хороших руководств по управлению зарегистрированными пользовательскими данными, пожалуйста, не стесняйтесь поделиться ими сменя. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Выйдя из системы, вы удаляете куки, но не обновляете состояние Redux.
Удаляете email и id из избыточного состояния.

Но лучший способ - переместить весь этот приготовленныйуправление для редуктора:

т.е.

  • редуктор должен установить исходное состояние путем проверки файлов cookie
  • при действии LOGIN, редуктор должен установить файлы cookie в дополнение к обновлениюсостояние
  • при действии LOGOUT, редуктор должен удалить куки в дополнение к обновлению состояния

Остальная часть вашего кода должна проверять состояние входа в систему только из состояния избыточности.
Таким образом, у вас будет единственный источник правды.

0 голосов
/ 08 октября 2019

Если я правильно понял ваш вопрос

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

Это довольно распространенная проблема, недооцениваемая, я должен сказать, современные браузеры не удаляют данные сайта до тех пор, пока они не обновятся / не будут повторно открыты и т. Д. И т. Д.

Чтобы решить эту проблему, я рекомендую вам придерживаться той же логики для удаления файлов cookie, но поменяйте местами структуру данных и условную логику для проверки активности входа в систему.

Поэтому измените хранилище с

id = ...
email = ......

на

userData: {
  id: ....,
  email: ......
}

вам нужно будет использовать JSON.parse при чтении файла cookie и JSON.stringify для сохранения данных

Но для чего много усилий? что бы вы получили?

  • Организованная информация о пользователях
  • Решение вопроса о том, что cookie не удаляется - установив для cookie значение

    userData: {}

    , а затем удаляет его и во время входа в систему, проверяя, существуют ли идентификатор и адрес электронной почты, является userData с использованием метода hasProperty, если Js

  • Информация контролируемого пользователякоторый может хранить и обрабатывать (используя js-утилиту, которую вы пишете в реагировать) больше атрибутов (может быть, хранилище сеансов или проверка сервера и т. д.)

  • Шифрование всех пользовательских данных, если вы находитесь в таком видео безопасности

Я надеюсь, что я дал вам подход к работе и систематическому решению этой проблемы: -)

Также не забудьте проверить, что кукине существует, чтобы установить его пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...