написал метод входа и работал. мой конфиг аутентификации:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'admin-web' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'passport',
'provider' => 'admins',
],
],
написал метод выхода из системы, как:
public function logout(Request $request)
{
Auth::guard('admin-web')->logout();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user()->tokens->find($id);
}
не могу найти токены в этой колонке:
$token = $request->user()->tokens->find($id);
и ошибка:
Trying to get property 'tokens' of non-object
есть какое-то решение?
Как только вы позвоните Auth::guard('admin-web')->logout()
Вы не сможете получить пользователя из запроса.
Вы должны получить токен перед выходом из системы:
public function logout(Request $request)
{
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user('admin-web')->tokens->find($id);
Auth::guard('admin-web')->logout();
}
Используйте, как показано ниже, и проверьте это. Вы пропустили параметр $ id.
public function logout(Request $request,$id)
{
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user('admin-web')->tokens->find($id);
\Auth::guard('admin-web')->logout();
}