phpslimslim-3slim-4

how can validate psr-jwt token on every api call


I am using https://github.com/RobDWaller/psr-jwt library in my slim4 application

I want to validate the token before the API call. if the token is valid, API should call else an error should prompt. Below is my code

//routes.php
$app->group('/myapp/login', function (Group $group) {
        $group->post('', LoginProcess::class);
    });

$app->group('/myapp/register', function (Group $group) {
        $group->post('', RegisterProcess::class);
    });
$app->group('/,myapp', function (Group $group) {
        $group->get('/list', ListUser::class);
    });

//middlware.php
<?php
use App\Application\Middleware\AuthMiddleware;
use Slim\App;
return function (App $app) {
$app->add(\PsrJwt\Factory\JwtMiddleware::html('Secret123!456$', 'jwt', 'Authorisation Failed'));
};

Is it validate the token itself. are any other methods exist? my question is:

  1. How to write custom errors?

  2. How to exclude middleware to log in, register apis before authenticated & after authenticated.

    I am new to the slim framework. please help me.


Solution

  • To invoke a middleware on routing level you can add that middleware to a specific route and/or a routing group.

    Slim 4 example:

    use Slim\Routing\RouteCollectorProxy;
    use PsrJwt\Factory\JwtMiddleware;
    // ...
    
    $app->group('/myapp', function (RouteCollectorProxy $group) {
        $group->post('/login', LoginProcess::class);
        $group->post('/register', RegisterProcess::class);
        $group->get('/list', RegisterProcess::class);
    
    })->add(JwtMiddleware::html('Secret123!456$', 'jwt', 'Authorisation Failed'));