Angular Larevel JWT получить аутентифицированного пользователя - PullRequest
0 голосов
/ 20 марта 2020

Я занимаюсь разработкой приложения Angular + Laravel. Я сделал вход в систему с JWT, и он работает нормально, я получаю токен и сохраняю его в localStorage, выход из системы тоже работает. Но у меня проблема с идентификацией зарегистрированного пользователя. Функция me всегда возвращает ноль json, почему? Я искал решение онлайн, но ничего не помогло

AuthController

public function __construct()
{
    $this->middleware('auth:api', ['except' => ['login','register']]);
}

public function login()
{
    $credentials = request(['email', 'password']);

    if (! $token = Auth::guard()->attempt($credentials)) {
        return response()->json(['error' => 'Email or password doesn\'t exits.'], 401);
    }

    return $this->respondWithToken($token);
}

public function register(RegisterRequest $request)
{
    User::create($request->all());
    return $this->login($request);
}

public function me()
{   
    return response()->json(Auth::guard()->user());
}

public function logout()
{
    Auth::guard()->logout();

    return response()->json(['message' => 'Successfully logged out']);
}

public function refresh()
{
    return $this->respondWithToken(Auth::guard()->refresh());
}

protected function respondWithToken($token)
{
    return response()->json([
        'access_token' => $token,
        'token_type' => 'bearer',
        'expires_in' => Auth::guard()->factory()->getTTL() * 60,
        'user' => Auth::guard()->user()->name
    ]);
}

config / auth

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
        'hash' => false,
    ],
],

1 Ответ

0 голосов
/ 20 марта 2020

Вы исключаете метод me из промежуточного программного обеспечения auth:api в конструкторе контроллеров;

Измените это:

    public function __construct()
    {
        $this->middleware('auth:api', ['except' => ['login','register','me']]);
    }

на следующее:

    public function __construct()
    {
        $this->middleware('auth:api', ['except' => ['login','register']]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...