将数据传递到链中的中间件

War*_*ick 14 c# middleware asp.net-core

当我将中间件注册为请求管道的一部分时,如何通过中间件链传递数据.(最终可在MVC控制器操作中访问)

例如,我已经实现了自定义中间件来验证我的请求,但是如何在中间件链中传递身份验证数据(例如身份验证和其他数据的结果) - 最终希望从MVC控制器操作中访问数据,以及用于根据身份验证结果限制访问的自定义MVC操作过滤器.

有没有我可以在每个请求的基础上存储自定义数据,并在以后的请求链中访问它?

Hen*_*ema 19

您可以使用该HttpContext.Items集合存储请求生命周期内的数据.它的主要用例是围绕组件传递数据(例如中间件和控制器).添加和阅读项目很简单:

写:

context.Items["AuthData"] = authData;
Run Code Online (Sandbox Code Playgroud)

读:

var authData = (AuthData)context.Items["AuthData"];
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅ASP.NET文档.