Php 从Slim 3中间件返回自定义对象

Php 从Slim 3中间件返回自定义对象,php,slim,Php,Slim,我正在用Slim3编写一个API,它与一个遗留系统集成。客户端在querystring中向我的API发送令牌。我想编写一个中间件来验证令牌并返回一个对象,该对象包含遗留系统使用的必要的内部登录凭据(与令牌不同) 我现在可以验证令牌,但我的问题是Slim 3要求中间件返回\Psr\Http\Message\ResponseInterface实例。我还希望它将自定义对象返回到应用程序 我认为我可以通过在中间件外部重新验证令牌来实现这一点,并且只使用中间件作为验证令牌的一种方式,如果失败,则返回错误。

我正在用Slim3编写一个API,它与一个遗留系统集成。客户端在querystring中向我的API发送令牌。我想编写一个中间件来验证令牌并返回一个对象,该对象包含遗留系统使用的必要的内部登录凭据(与令牌不同)

我现在可以验证令牌,但我的问题是Slim 3要求中间件返回\Psr\Http\Message\ResponseInterface实例。我还希望它将自定义对象返回到应用程序

我认为我可以通过在中间件外部重新验证令牌来实现这一点,并且只使用中间件作为验证令牌的一种方式,如果失败,则返回错误。我倾向于认为这种笨拙的方式是可以避免的,所以我只需要在中间件中使用一次令牌,同时返回自定义对象,这样我就不必使用令牌两次

我到处寻找解决方案,但我能找到的所有示例中间件都与之类似,它们只是在中间件中进行身份验证,但不需要返回自定义对象。对于这个定制需求,位于的文档似乎也没有多大帮助


有什么想法吗?

您可以在中间件中包含一个回调,您可以使用它将自定义对象存储在某处。例如,使用回调,您可以使用回调来存储JWT的解码内容

$app->add(new \Slim\Middleware\JwtAuthentication([
    "secret" => "supersecretkeyyoushouldnotcommittogithub",
    "callback" => function ($request, $response, $arguments) use ($app) {
        $app->jwt = $arguments["decoded"];
    }
]));
请注意,这种回调不是slim3特性。只是这个中间件碰巧使用的东西