我在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上的文档似乎对此自定义要求没什么帮助。
有什么想法吗?
答案 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功能。这个中间件碰巧使用的东西。