Я делаю простой API с Lumen, я использую библиотеку JWTAuth для создания токенов.
Мой логин выглядит так:
try
{
$this->validate($request, [
'email' => 'required|email|max:255',
'password' => 'required'
]);
try
{
if (!$this->token = $this->jwt->attempt($request->only('email', 'password'))):
throw new HttpResponseException(response()->json(['message' => 'Email/Contraseña invalidos'], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
endif;
}
catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e)
{
throw new HttpResponseException(response()->json(['message' => 'Token expirado'], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e)
{
throw new HttpResponseException(response()->json(['message' => 'Token invalido'], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
catch (\Tymon\JWTAuth\Exceptions\JWTException $e)
{
throw new HttpResponseException(response()->json(['message' => 'Sin token'], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
return response()->json([
"token" => $this->token,
"email" => $this->jwt->user()->email,
"rfc" => $this->jwt->user()->rfc,
"nombre" => $this->jwt->user()->nombre,
"_uof" => $this->Cipher->EncryptCipher($this->jwt->user()->id),
"_rof" => $this->Cipher->EncryptCipher($this->jwt->user()->rfc)
], 200);
}
catch(\Exception $error)
{
throw new HttpResponseException(response()->json(['message' => 'Error al iniciar sesión el usuario'], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
, который возвращает мой токен, который установленв приложении React Frontend, когда я пытаюсь проверить токен с помощью curl или postman в моем локальном окружении с помощью:
try
{
$this->payload = $this->jwt->getPayload($this->jwt->getToken())->toArray();
var_dump($this->payload);
}
catch(\Exception $error)
{
var_dump($error->getMessage());
}
Мой запрос выглядит так:
curl -X POST \
http://localhost:8000/debtor/validateLogin/ \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGltcGFsYS5yZWFsaG9zdC5jbG91ZFwvYXV0aFwvbG9naW4iLCJpYXQiOjE1MjcyODcyMTEsImV4cCI6MTUyNzI5MDgxMSwibmJmIjoxNTI3Mjg3MjExLCJqdGkiOiJyc3duZFh0NndzMXdhRGRvIiwic3ViIjoxLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIiwibmFtZSI6IlVsaXNlcyBDYXJyZW9uIiwicmZjIjoiWEFYWDAxMDEwMTAwMCIsImF2YXRhciI6bnVsbH0.Ey1lMFYtSAE5f8pSrXjxnrMLGv2yOhl3DvwJo1qiTCI' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 29819986-830d-48f8-8724-25ce2fbf0af2' \
-d '{}'
Токен включенЗаголовок запроса, но когда я делаю запрос, он выдает эту ошибку «Требуется токен».
Я изменил .htaccess на:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
#RewriteCond %{HTTP:Authorization} .
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Fix authentication headers
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Но все равно не 'Т работа, любой совет?
С уважением