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

时间:2015-10-26 13:02:37

标签: php slim

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

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

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

我一直在寻找解决方案,但我能找到的所有示例中间件都类似于https://github.com/julionc/slim-basic-auth-middleware,它们只是在中间件中进行身份验证,但没有要求返回自定义对象。 http://www.slimframework.com/docs/concepts/middleware.html上的文档似乎对此自定义要求没什么帮助。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

$app->add(new \Slim\Middleware\JwtAuthentication([
    "secret" => "supersecretkeyyoushouldnotcommittogithub",
    "callback" => function ($request, $response, $arguments) use ($app) {
        $app->jwt = $arguments["decoded"];
    }
]));

请注意,这种回调不是Slim 3功能。这个中间件碰巧使用的东西。