1

Тема: Постійне перевірення стану автентифікації

Зауважте, що якщо ви відкриєте fb у двох вкладках і вилогінетесь в одній, то це відобразиться і в другій.

Як таке зробити на фронт-енді на reactjs? Мене цікавить концептуальна відповідь, але від шматків коду не відмовлюсь. Якщо немає ідей специфічних для reactjs, то й просто розумні думки вислухаю.

2

Re: Постійне перевірення стану автентифікації

Не скажу про FB та reactjs, але є така штука як localStorage. Вона спільна для всіх вкладинок одного сайту(origin-у, точніше), відповідно, можна раз на секунду її перевіряти.

Подякували: FakiNyan, VTrim, Yola3

3

Re: Постійне перевірення стану автентифікації

Ne skagu pro FB ta ReaktDgS, ale, z dosvidom PHP, ja by ctcosj cukav z tjamkoju session — moge je potrjibna biblijoteka. Jakctco g nji, to porada @koaly v nahodi.

4

Re: Постійне перевірення стану автентифікації

sessionStorage власний для кожної вкладинки.
Реп'яшки використовуються при запиті, не певен, що вкладинка відстежить їхню зміну без запиту.

Подякували: FakiNyan, Yola2

5

Re: Постійне перевірення стану автентифікації

Додам ще IndexedDB, але це радше для зберігання більш структурно складних даних

Подякували: Yola1

6 Востаннє редагувалося Q-bart (17.05.2021 13:40:18)

Re: Постійне перевірення стану автентифікації

koala написав:

Не скажу про FB та reactjs, але є така штука як localStorage. Вона спільна для всіх вкладинок одного сайту(origin-у, точніше), відповідно, можна раз на секунду її перевіряти.

Додам також, що токен/ключ/any варто тримати таки в куках(реп'яшках тобто), а в localStorage - лише якесь bool значення, щоб відстежити чи залогований. Це для безпеки, бо куки важче вкрасти.

Щодо перевірки раз в секунду, думаю reactjs має мати щось, щоб відстежувати зміни в localstorage

Подякували: koala, FakiNyan, leofun01, Yola4

7

Re: Постійне перевірення стану автентифікації

в куках з httpOnly, шоб вони не були доступні на стороні клієнта, це вже топовий захист буде

8

Re: Постійне перевірення стану автентифікації

FakiNyan написав:

шоб вони не були доступні на стороні клієнта

Тобто кожну секунду (чи скільки) опитувати сервер?

9

Re: Постійне перевірення стану автентифікації

koala написав:
FakiNyan написав:

шоб вони не були доступні на стороні клієнта

Тобто кожну секунду (чи скільки) опитувати сервер?

не пойняв питання, нашо опитувати?

10 Востаннє редагувалося dot (17.05.2021 15:07:11)

Re: Постійне перевірення стану автентифікації

koala написав:

sessionStorage власний для кожної вкладинки.
Реп'яшки використовуються при запиті, не певен, що вкладинка відстежить їхню зміну без запиту.

Ja ne pro toho session kazav, ne darma g zhadav PHP jak dosvid.

Подякували: leofun011

11

Re: Постійне перевірення стану автентифікації

dot написав:
koala написав:

sessionStorage власний для кожної вкладинки.
Реп'яшки використовуються при запиті, не певен, що вкладинка відстежить їхню зміну без запиту.

Ja ne pro toho session kazav, ne darma g zhadav PHP jak dosvid.

Ви з koala, говориет про різні сесії. Підозроюю на PHP є можливість тримати дані в БД, а за токеном, який тежить в куках, отримувати ці дані з БД на бекенді (PHP).

Подякували: dot1

12

Re: Постійне перевірення стану автентифікації

Мені здається тут треба трохи курнути в бік oAuth... і SSO. При чому я бачив дві реалізації. Перша, сінгл-пейдж якось "все тримає в собі" (що про це "знає" бекенд - я не в курсі, бо бачив це зі сторони, а не зсередини) і шле рефреш-токени на SSO-сервер кожні декілька секунд. Друга, про стан авторизації "знає" лише бекенд і шле рефреш-токени при кожному запросі з сінгл-пейджа, відповідно розлогін відбувається при першій же дії, яка потребує звернення до бекенду.

13

Re: Постійне перевірення стану автентифікації

рефреш токен юзається лише коли аксес токен здох, і живе довше - точно не декілька секунд. У нас на проєкті аксес токен живе 10хв, а рефреш токен, чи то тиждень, чи то два.

14

Re: Постійне перевірення стану автентифікації

Виявляється ще є Broadcast Channel API і спеціально для reactj - redux-state-sync, який скочується до чогось старішого, якщо оглядач не підтримує Broadcast Channel API.