Как можно отозвать токен в мульти аутентификации в laravel? - PullRequest
0 голосов
/ 16 октября 2018

написал метод входа и работал.моя конфигурация авторизации:

   '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

есть какое-нибудь решение?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Используйте как показано ниже и проверьте это. Вы пропустили параметр $ 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();
  }
0 голосов
/ 16 октября 2018

Как только вы позвоните 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();
}
...