laravel JWT возвращает «error»: «Unauthorized» при входе в систему - PullRequest
0 голосов
/ 21 ноября 2018

прошло около трех дней, и я не мог решить эту проблему, которую я искал повсюду (документация, стекопоток ... и т. Д.), Но безуспешно.

В любом случае, моя проблема заключается в том, что всякий раз, когда я отправляюPOST запрос к логину api localhost:8000/api/auth/login Я всегда получаю эту ошибку:

{
"error": "Unauthorized"
}

и вот мое тело запроса:

{
"email": "demo@demo.demo",
"password": "123321"
}

Я следовал официальным документам: https://jwt -auth.readthedocs.io / ru / develop / quick-start /

Редактировать 1

заголовок запроса (почтальон):

Content-Type: application/json

Маршруты:

Route::group([

'middleware' => 'api',
'prefix' => 'auth'

], function ($router) {

Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');

});

login Функция расположена в app/Http/Controllers/AuthController.php:

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

    if (! $token = auth()->attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

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

Редактировать 2 Вот список маршрутов:

|        | GET|HEAD | /                |      | Closure                                     | web          |
|        | POST     | api/auth/login   |      | App\Http\Controllers\AuthController@login   | api          |
|        | POST     | api/auth/logout  |      | App\Http\Controllers\AuthController@logout  | api,auth:api |
|        | POST     | api/auth/me      |      | App\Http\Controllers\AuthController@me      | api,auth:api |
|        | POST     | api/auth/refresh |      | App\Http\Controllers\AuthController@refresh | api,auth:api |

Редактировать 3

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

1 Ответ

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

У меня была такая же проблема, поэтому мое решение было:

1) добавить псевдонимы в app.php

...
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,

2) вместо auth()->attempt($credentials).. использовать

use JWTAuth;
use JWTFactory;
...
public function login(){
    ...
    if (! $token = JWTAuth::attempt(...

3) Не забудьте обновить остальные части, например, эту 'expires_in' => auth()->factory()->getTTL() до

...
'expires_in' => JWTFactory::getTTL() * 60

нашел ответ здесь - https://github.com/tymondesigns/jwt-auth/issues/1367#issuecomment-340967334

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...