有没有办法捕获OAuth提供的请求的响应?具体来说,我需要记录来自OAuthAuthorizationServerProvider.GrantResourceOwnerCredentials()
的请求和响应。
我已尝试延长OwinMiddleware
并覆盖Invoke
,如this post所示,但我无法阅读回复正文。我想在this post演示时使用消息处理程序,但我的UseHttpMessageHandler
对象上没有AppBuilder
。
非常感谢任何帮助。 谢谢!
更新
修改Brock优秀video中提供的示例,这是我需要做的:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Use(typeof(MW1));
app.Map("/api", fooApp => {
fooApp.Use<MW2>();
});
}
}
public class MW1 {
Func<IDictionary<string, object>, Task> next;
public MW1(Func<IDictionary<string, object>, Task> next) {
this.next = next;
}
public async Task Invoke(IDictionary<string, object> env) {
var ctx = new OwinContext(env);
await next(env);
// I need to be able to read: <h1>MW2 called</h1> written by MW2
var body = ctx.Response.Body;
// body.CanRead = False
}
}
public class MW2 {
Func<IDictionary<string, object>, Task> next;
public MW2(Func<IDictionary<string, object>, Task> next) {
this.next = next;
}
public async Task Invoke(IDictionary<string, object> env) {
var ctx = new OwinContext(env);
await ctx.Response.WriteAsync("<h1>MW2 called</h1>");
await next(env);
}
}
我实际上需要阅读OAuth提供商发送的响应,但我认为这将是相同的过程。
答案 0 :(得分:0)
为什么不实现位于OAuth AS中间件前面的OWIN中间件组件?