Cześć,
chciałbym zaimplementować refresh token do swojej apki, ale pojawia się parę pytań:
- access tokena nie trzymam w bazie, ale refresh token chyba będę musiał? gdzie go trzymać? normalnie w User czy osobna kolekcja?
- czy przy każdym nowym logowaniu generuje też nowy refresh token?
- potrzebuję endpoint np
/refresh
, jak tam przesyłać ten token? normalnie w body? i co ten endpoint ma zwracać, tylko nowy access token czy też nowy refresh token?
- co w przypadku gdy wygaśnie refresh token?
Skupiasz się bardzo na implementacji tego co robisz, a powinieneś się bardziej skupić na tym co próbujesz osiągnąć i po co.
- Po co jest access token - po to żeby korzystać z aplikacji
- Po co jest refresh token - po to żeby dostać nowy access token
To jak to "pod spodem" ogarniesz, nie ma większego znaczenia, to Twoje szczegóły implementacyjne, i możesz to rozwiązać w dowolny sposób jaki chcesz. Np odpowiadając na pytanie
potrzebuję endpoint np /refresh
[...] i co ten endpoint ma zwracać, tylko nowy access token czy też nowy refresh token?
Odpowiedź na to pytania wymaga zastanowienia się co tak na prawdę Ty chcesz zrobić. Czy chcesz żeby podczas refreshu user dostał refresh token czy nie. Powinieneś wiedzieć jakie są tego konsekwencje, wady i zalety.
Oczywistą konsekwencją jest np to, że jeśli Twój klient (np przeglądarka) nie ma aktualnego refresh tokenu ani access tokenu, to to jest właściwe tożsame z tym jakby nie był zalogowany.
Oczywistą konsekwencją jest np to, że jeśli Twój klient (np przeglądarka) nie ma aktualnego refresh tokenu, to to jest właściwe tożsame z tym jakby nie był zalogowany.
Czemu nie? Ma access token :)