nospor
15.02.2022, 17:17:21
Hejka,
mam dwa serwisy, jeden na domenie A.pl a drugi na domenie B.pl.
Sa to dwie rozne domeny.
Serwis A posiada autoryzacje i uzytkowniki moze przegladac serwis A bedac zalagowanym lub nie.
Serwis B nie posiada autoryzacji. Czy mozna w jakis sposob stwierdzic, czy uzytkownik bedac w serwisie B, jest zalogowany w serwisie A? Mowa o tej samej przegladarce.
Pewnie bez jakis przekierowan sie nie obejdzie?
Salvation
15.02.2022, 20:59:07
Można spróbować wdrożyć SSO. Wtedy logowanie masz na stronie B, ale autoryzacja leci przez A.
Inne rozwiązanie - to jeżeli logowanie masz jako stateless i używasz np. zapisanego tokenu po stronie frontu (localstorage), to można zaimplementować endpoint na A, który będziesz pingować z tym tokenem z B i w odpowiedzi dostawać będziesz np. `boolean`.
nospor
15.02.2022, 21:25:34
Serwis B nie ma i nie potrzebuje w ogole logowania. Jedyne co serwis B potrzebuje to info, czy uzytkownik jest zalogowany w serwisie A.
Niestety sa to dwie rozne domeny wiec nie moge uzyc ciastek powiedzmy. Rozwiazanie z tokenem wydaje sie ok ale nie rozumiem za bardzo. Skad serwis A bedzie wiedzial ze token z B nalezy do usera z A?
Salvation
15.02.2022, 21:56:00
viking
16.02.2022, 07:39:33
Rozwiązania cross-domenowe są zabronione więc jeśli nie masz np jakiegoś wspólnego punktu logowania (np oauth) to może być ciężko.
nospor
16.02.2022, 10:01:01
Tak tez myslalem, wolalem sie jednak upewnic. Dobra, dzieki, pozostaje wiec praca chalupnicza nad rozwiazaniem
vokiel
16.02.2022, 10:25:09
Pozostaje jakiś fingerprinting przeglądarki i forever cookies / pingowanie w tle wspólnej domeny.
nospor
16.02.2022, 10:57:54
No padl pomysl by serwis B robil jakis token, pewnie fingerprint, przekierowal na serwis A z tym tokenem, serwis A zapisze sobie do bazy z info czy jest zalogowany czy nie i przekieruje na serwis B i wted sewis B zrobi wewnetrzny call do A by pobrac info czy zalogowany czy nie.
Proste, ale uzytkownik przez ulemk sekundy zobaczy dwa skoki na stronie do serwisu A a potem do B spowrotem.
Oczywiscie token wazy czasowo by za kazdym razem odswiezeniem strony B nie skakac ciagle do A
vokiel
16.02.2022, 18:38:39
A czy potrzebujesz aż przekierowania? Nie lepiej XHR z zapytaniem czy jest zalogowany czy nie. Możesz przecież mieć info o tym w bazie wraz z fingerprintem wyliczonym na tych samych parametrach.
Salvation
16.02.2022, 18:51:02
O tym pisałem... Logujesz się na A gdzie generuje się token. Token zapisujesz w localstorage i masz do niego dostęp w nowej karcie gdzie idziesz na stronę B. Pobierasz token z localstorage i pchasz XHR-em Z B na endpoint do A, który zwraca np. boolean i robisz sobie co chcesz z tą wartością.
nospor
17.02.2022, 08:55:27
A widzicie, no to mi umknelo z waszych wypowiedzi wczesniej. Dzieki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.