我需要将一些参数从中间件传递给控制器,如果我必须照顾性能,资源使用和安全性,我很困惑应该使用哪种方法。
context.Items["user-id"] = "12345";
context.Session.SetInt32("user-id", 12345);
(这是保持会话始终启用的要求。)
答案 0 :(得分:1)
您可以将其作为HTTP标头通过请求传递到管道中
public class UserHeaderMiddleware
{
private readonly RequestDelegate _next;
public UserHeaderMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
context.Request.Headers.Add("user-id", new[] { userId.ToString() });
await _next(context);
}
}
答案 1 :(得分:1)
如果以后需要存储用户ID,则使用会话是一种方法。 Items
仅将其传递给该请求。