pracuję na OSO z Vue.js i vue-router i mam teraz do czynienia z autoryzacji/uwierzytelnienia za pomocą JWT. Mam uporządkowany koniec (punkt końcowy API), tak, że wyda token w odpowiedzi na logowanie i sprawdza wymagany nagłówek w kolejnych żądaniach. Teraz chcę zaimplementować stronę klienta (Vue.js).uwierzytelniania JWT z Vue.js
Jak rozumiem, zasadniczo to, co trzeba zrobić, to wymaga uwierzytelniania dla wszystkich trasach oprócz „/” i „/ login”. Jeśli uwierzytelnienie jest obecne, przesyłam token (który jest przechowywany w localStorage po pomyślnym zalogowaniu) w nagłówku autoryzacji. Jeśli nie uda się sprawdzić poprawności na serwerze, użytkownik zostanie przekierowany do "/ login" w wyniku odpowiedzi na błąd.
Tak, mam kilka pytań na temat tego, co trzeba zrobić, aby wdrożyć to:
Jak najlepiej przesłać nagłówek z każdego żądania, oprócz do punktu końcowego logowania? Wiem z JQuery, którego używam do AJAX, mogę skonfigurować globalny "ajaxSetup", który spowoduje, że nagłówek zostanie przesłany przy każdym żądaniu, ale jak mogę określić wyjątki? Uciążliwe jest indywidualne dodawanie nagłówka do każdego żądania punktu końcowego interfejsu API.
Podobnie, jak skonfigurować kontrolę wstępną uwierzytelniania, która dotyczy wszystkich tras poza wymienionymi 2 ("/" i "/ login")?
Biorąc pod uwagę, że używam obecności lub w inny sposób pozornie prawidłowego uwierzytelnienia (widocznie z tego powodu, że wciąż musi być sprawdzona na punkcie końcowym API), aby określić, czy wyświetlić niektóre pozycje menu itp., Czy jest to wykonalne aby było to bardziej szczegółowe i pokazywać różne rzeczy dla różnych poziomów uprawnień, zgodnie z określeniem w polu "Zakres" we wczytywanym tokenie? Najwyraźniej najprostszym sposobem na zajęcie się tokenem JWT jest wyłącznie ustalenie, czy jest on obecny, czy też nie, więc nie jest wymagane analizowanie zawartości po stronie klienta. Ale biorąc pod uwagę, że JWT dopuszcza znaczącą treść, czy nie jest dobrym pomysłem, aby spróbować skorzystać z tego znaczenia po stronie klienta, a także serwera? Oczywiście staje się to mniej praktyczne, jeśli token jest sam w sobie zaszyfrowany, więc moim pomysłem byłoby użycie niezaszyfrowanych tokenów (i upewnienie się, że nic nie wynika z ładunku).
Dzięki, to jest przydatne. Sądzę, że lepiej byłoby sprawdzić, czy trasa NIE wymaga uwierzytelnienia, ale to szczegół. Nadal nie jesteś pewien co do części 1 i 3, ale może nie ma to znaczenia, wysyłając nagłówek autoryzacji, gdy nie jest to wymagane. –
Oto samouczek, jak ustawić globalne nagłówki za pomocą ajax http://stackoverflow.com/questions/7686827/how-can-i-add-a-custom-http-header-to-ajax-request-with-js- lub-jquery nie spowoduje problemu z wysłaniem tokena bez konieczności –