tymondesigns / jwt-auth

🔐 JSON Web Token Authentication for Laravel & Lumen
https://jwt-auth.com
MIT License
11.23k stars 1.55k forks source link

InvalidClaimException: Invalid value provided for claim [exp] in vendor\tymon\jwt-auth\src\Claims\DatetimeTrait.php:44 #1025

Open gandra opened 7 years ago

gandra commented 7 years ago

Hi!

I have laravel 5.4 app as backend APP using tymon/jwt-auth for JWT. App works fine on linux box but on windows I have InvalidClaimException.

Login is sent from angular 2 app via REST api.

Here is the stack trace:


[2017-03-01 16:01:07] local.ERROR: Tymon\JWTAuth\Exceptions\InvalidClaimException: Invalid value provided for claim [exp] in C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Claims\DatetimeTrait.php:44
Stack trace:
#0 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Claims\Claim.php(56): Tymon\JWTAuth\Claims\Expiration->validateCreate(false)
#1 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Claims\DatetimeTrait.php(35): Tymon\JWTAuth\Claims\Claim->setValue(false)
#2 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Claims\Claim.php(42): Tymon\JWTAuth\Claims\Expiration->setValue(false)
#3 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Claims\Factory.php(64): Tymon\JWTAuth\Claims\Claim->__construct(false)
#4 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Claims\Factory.php(91): Tymon\JWTAuth\Claims\Factory->get('exp', false)
#5 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Factory.php(140): Tymon\JWTAuth\Claims\Factory->make('exp')
#6 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Factory.php(166): Tymon\JWTAuth\Factory->buildClaims()
#7 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\Factory.php(74): Tymon\JWTAuth\Factory->buildClaimsCollection()
#8 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\JWT.php(217): Tymon\JWTAuth\Factory->make()
#9 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\JWT.php(61): Tymon\JWTAuth\JWT->makePayload(Object(Dnc\Extensions\DncUser))
#10 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\JWT.php(75): Tymon\JWTAuth\JWT->fromSubject(Object(Dnc\Extensions\DncUser))
#11 C:\xampp\htdocs\my-app\vendor\tymon\jwt-auth\src\JWTAuth.php(50): Tymon\JWTAuth\JWT->fromUser(Object(Dnc\Extensions\DncUser))
#12 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(221): Tymon\JWTAuth\JWTAuth->attempt(Array)
#13 C:\xampp\htdocs\my-app\app\Http\Controllers\Api\ApiLoginController.php(16): Illuminate\Support\Facades\Facade::__callStatic('attempt', Array)
#14 [internal function]: Dnc\Http\Controllers\Api\ApiLoginController->login(Object(Dnc\Http\Requests\LoginRequest))
#15 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(55): call_user_func_array(Array, Array)
#16 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('login', Array)
#17 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Dnc\Http\Controllers\Api\ApiLoginController), 'login')
#18 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Route.php(160): Illuminate\Routing\Route->runController()
#19 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Router.php(559): Illuminate\Routing\Route->run()
#20 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#21 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#22 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#23 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#24 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#25 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), '60', '1')
#26 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#27 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#28 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#29 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#30 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#31 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(174): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#32 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#33 C:\xampp\htdocs\my-app\app\Http\Middleware\Cors.php(33): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#34 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Dnc\Http\Middleware\Cors->handle(Object(Illuminate\Http\Request), Object(Closure))
#35 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#36 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#37 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#39 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#40 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#42 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#43 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#45 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#46 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#47 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#48 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#49 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#50 C:\xampp\htdocs\my-app\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#51 C:\xampp\htdocs\my-app\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#52 C:\xampp\htdocs\my-app\server.php(21): require_once('C:\\xampp\\htdocs...')
#53 {main}  

Any idea why?

ngocnd0242 commented 6 years ago

I saw same problem, any ideal?

yehiasalah commented 5 years ago

am using xampp on windows platform and I was faced with the same problem but after a large number of attempts and debugging I found the following: The value of the [exp] expected to be [ Timestamp in milliseconds ] like that

1541003656000

but my server provide Timestamp in Different format some thing like that

1541003757

I have to modify public function exp() { return Utils::now()->addMinutes($this->ttl)->getTimestamp(); } In vendor/tymon/jwt-auth/src/Claims/Factory.php To be public function exp() { return round(microtime(true) * 1000); }

And Now It Working Successfully @tymondesigns

yehiasalah commented 5 years ago

@ngodinhngoc the JWT package expecting exp value as Timestamp in milliseconds some thing like 1541003656000

razapoonja commented 4 years ago

Facing same issue on laravel 6 using version 1.0.0-rc.5. @yehiasalah solution helped.

stale[bot] commented 3 years ago

Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.