Stworzyłem API do logowania w mojej aplikacji internetowej. Po sprawdzeniu parametrów użyj metody Auth: loginUsingId() z id użytkownika, który ma być zalogowany.
Po tym jestem poprawnie uwierzytelniony, w rzeczywistości wykonanie echo Auth::user() pokazuje poprawnie właściwość użytkownika.
Jednak dokonując przekierowania na inną stronę projektu, nie jestem już zalogowany w portalu i wyświetla mi się strona logowania.
Wygląda na to, że sesja użytkownika nie została zachowana lub w ogóle nie została utworzona.
Używam Laravela 5.6. Nie mam oprogramowania pośredniczącego dla trasy.

0
Lorenzo Ruozzi 2 listopad 2018, 15:47

1 odpowiedź

Najlepsza odpowiedź

Za każdym razem, gdy Twoja strona uzyskuje dostęp do interfejsu API, zasadniczo rozmawia z zupełnie nową instancją interfejsu API.

Pomyśl o tym w ten sposób. Twój punkt końcowy "logowania" w rzeczywistości nie mówi API, aby się logował. Mówi mu tylko, aby zweryfikował twierdzenie wywołującego, że podane hasło należy do danego użytkownika, koniec historii. Jeśli chcesz przekształcić to uwierzytelnianie w rzeczywiste zachowanie „logowania” z perspektywy interfejsu użytkownika, musisz wykonać inne kroki.

Jeśli Laravel udostępnia pliki Blade dla Twojej witryny, to jest to inna historia. Gotowy do użycia, generuje dla Ciebie sesję PHP i wysyła plik cookie z kluczem sesji do przeglądarki w celu wykorzystania w kolejnych żądaniach.

Podobnie jak w przypadku klucza sesji, aby utrzymać sesję między witryną internetową a oddzielnym interfejsem API, każde kolejne wywołanie musi zawierać token. I potrzebujesz punktu końcowego logowania, aby udostępnić ten token po pomyślnym uwierzytelnieniu.

Paszport to jedna droga, ale może to być przesada w twojej sytuacji. Paszport jest dobry do obsługi użytkowników, klientów i uprawnień autoryzacyjnych. Ale jeśli wszystko, czego chcesz, to uwierzytelnianie i nie zależy Ci na kontrolowaniu tego, do czego mają dostęp poza tym, gorąco polecam Tymon JWT-Auth.

Zarówno Passport, jak i JWT-Auth używają „tokenów okaziciela” w nagłówku „Authorization”. Istnieją jednak inne rodzaje, takie jak „podstawowe tokeny”. Podstawowy token to po prostu zakodowana konkatenacja nazwy użytkownika i hasła. Laravel obsługuje to za pomocą oprogramowania pośredniczącego do tras, ale nadal polecam z JWT.

Jedną z fajnych rzeczy w JWT jest to, że możesz dołączyć dodatkowe dane w samym tokenie. Dzięki temu lepiej oprzeć się na Passport (OAuth2), jeśli i kiedy tego potrzebujesz, nie wymagając od strony klienta zmiany metody uwierzytelniania.

1
uguurozkan 6 listopad 2018, 07:41