новый токен, отдаём его ему.
При выходе мы делаем GET /logout с передачей Bearer токена, и вот как в самом методе контроллера определить юзера? auth()->user() естественно не работает.. могу только достать токен через ->header(...), но правильно ли это будет?
https://laravel.com/api/10.x/Illuminate/Contracts/Auth/StatefulGuard.html#method_logout Auth::guard()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); ничего больше не надо. а почему у тебя там нет user-а это другой вопрос.
auth()->user() естественно не работает.. "естественно" вот это не понятно, почему
Почему это не работает? Как раз работает auth()->user()
если запрос идет из браузера, то санктум использует сессии
Вот, не возвращает null, если запрос идёт от постмена. Токен указываю во вкладке, выбрав тип Bearer
Думаю вопрос решён) Нужно запомнить на будущее, что мидлвар auth:sanctum достает модельку юзера для auth()->user() 🥲 Такой ещё момент: если у меня проект не SPA, а только API (т.е. без сессий в request()->session()).. При /logout мне нужно только удалять токен юзера, и всё?
у тебя санктум на api? мидлварка подключена Sateful ?
auth:sanctum достает модельку юзера для auth()->user() а как ты хотел? конечно запрос происходит и вытаскивается
а для просто токенов - зачем тебе логаут вообще? токен не присылаешь - нет ауса, присылаешь - есть
Мож детский вопрос, но в чём отличие spa от обычного api ? Нет, я понимаю что значит одно и другое, но в первом ещё можно юзать сессии в request()->session, верно ?
https://laravel.com/docs/10.x/sanctum#how-it-works-api-tokens https://laravel.com/docs/10.x/sanctum#how-it-works-spa-authentication
с апи токенами какой может быть логаут? у тебя токен может годами жить. ты его выдал и сам заберешь
Ну вообще ты прав
годами хранится, да, читал. Но как тогда удалять токены?) Отдельную страницу со списком заводить?)
Они в кеше хранятся и при логауте из списка активов выстраиваются насколько я помню
конечно. а как ты выдать их собрался без нее?
это я к тому, что вот мы авторизовались с ноута, получили новый токен. После авторизовались с телефона, в итоге у нас два активных токена По логике вещей думал, что при нажатии кнопки выход на телефоне, удалять токен, и останется только один, который выдался на ноут. Но походу так не делают)
ты не очень понял смысл этих API Tokens... вот вечный логаут токена, удалить его. ты если хош выйти - удаляешь токен на клиенте. можно удалить на бэке. https://github.com/laravel/jetstream/blob/375e18a3f84cbef4838b4391cc805ee2402f15f5/src/Http/Controllers/Inertia/ApiTokenController.php#L84
https://t.me/laravel_web/980669
Обсуждают сегодня