Slim PHP: captura apenas rotas válidas com middleware

Estou escrevendo uma API REST com Slim. Eu escrevi um pequeno middleware para proteger os recursos, para que apenas usuários autenticados possam acessá-los:

<?php
class SecurityMiddleware extends \Slim\Middleware
{
    protected $resource;
    public function __construct($resource)
    {
        $this->resource = $resource;
    }
    public function call()
    {
        //get a reference to application
        $app = $this->app;
        //skip routes that are exceptionally allowed without an access token:
        $publicRoutes = ["/","/login","/about"];
        if (in_array($app->request()->getPathInfo(),publicRoutes)){
            $this->next->call(); //let go
        } else {
            //Validate:
            if ($this->resource->isValid()){
                $this->next->call(); //validation passed, let go
            } else {
                $app->response->setStatus('403'); //validation failed
                $app->response->body(json_encode(array("Error"=>"Access token problem")));
                return;
            }
        }
    }
}

Isso funciona, mas o efeito colateral indesejado é que o middleware não faz distinção entre rotas existentes e rotas inexistentes. Por exemplo, se um usuário tentar solicitar uma rota como/dfghdfgh que não existe, em vez de obter um código de status HTTP 404, ele receberá um 403 dizendo que não há token de acesso. Gostaria de adicionar uma implementação semelhante à seguinte verificação na classe de middleware:

if ($app->hasRoute($app->request->getPathInfo()){
    $this->next->call(); //let go so user gets 404 from the app.
}

Alguma idéia de como isso pode ser alcançado?

questionAnswers(3)

yourAnswerToTheQuestion