https://odan.github.io/2019/12/02/slim4-oauth2-jwt.html
If you like the article, please click on the ⭐ button.
https://odan.github.io/2019/12/02/slim4-oauth2-jwt.html
If you like the article, please click on the ⭐ button.
Hi @odan
I followed your tutorial and I can generate tokens but I get the following error when trying to validate tokens on routes:
Message: Entry "App\Middleware\JwtMiddleware" cannot be resolved: Entry "Psr\Http\Message\ResponseFactoryInterface" cannot be resolved: the class is not instantiable Full definition: Object ( class = #NOT INSTANTIABLE# Psr\Http\Message\ResponseFactoryInterface lazy = false ) Full definition: Object ( class = App\Middleware\JwtMiddleware lazy = false __construct( $jwtAuth = get(App\Auth\JwtAuth) $responseFactory = get(Psr\Http\Message\ResponseFactoryInterface) ) )
My route looks like this:
$commentRoute->post('', \App\Action\BakeOnline\CommentCreateAction::class)->add(\App\Middleware\JwtMiddleware::class);
Do you have any suggestions on how to solve this problem?
Thank you in advance.
It looks like the container definition for ResponseFactoryInterface::class
is missing. You can find all the details in the article.
use Psr\Http\Message\ResponseFactoryInterface;
// ...
ResponseFactoryInterface::class => function (ContainerInterface $container) {
return $container->get(App::class)->getResponseFactory();
},
@odan, thank you so much. It worked for me. And thank you for the article! It has been a really great help!
Hello @odan
Thank you so much for this article. I have 2 questions the first isn't so important. I already decided that I will implement the way it's in your doc.
What are the pros / cons of using a library like tuupola/slim-jwt-auth versus an approach like in this article and what do you recommend in the end?
Do you know any projects where these JWT-Functions are being tested? Or do you have examples?
Hi @samuelgfeller My approach is more Middleware and Routing based while the tuupola/slim-jwt-auth
approach uses an array to configure the different routes. For me the array based protection is not so good to maintain in the long run, for example when you add or change route paths you may miss some routes and suddenly it's unprotected. I prefer to explicitly add the JwtAuthMiddleware
to specific routes or route groups in routes.php
. You can open the routes.php
file see what is protected. My approach also makes it easier to fetch users from the database (see TokenCreateAction) instead of loading it from a fixed array. I think you have to decide what's better for your specific use case.
@odan that's very pertinent! I think easily worth mentioning in the article. Below where you link to tuupola/slim-jwt-auth
or somewhere near.
@samuelgfeller Yes, thanks. I will add it to the article.
@mkraha I think the documentation of tuupola/slim-basic-auth and tuupola/slim-jwt-auth is good enough.