【发布时间】:2018-12-15 18:51:27
【问题描述】:
我需要将一些参数从中间件传递到控制器,如果我必须注意性能、资源使用和安全性,我不知道应该使用哪种方法。
context.Items["user-id"] = "12345";context.Session.SetInt32("user-id", 12345);
(无论如何都需要保持会话启用。)
【问题讨论】:
标签: asp.net-core-2.0 asp.net-core-middleware
我需要将一些参数从中间件传递到控制器,如果我必须注意性能、资源使用和安全性,我不知道应该使用哪种方法。
context.Items["user-id"] = "12345";context.Session.SetInt32("user-id", 12345);(无论如何都需要保持会话启用。)
【问题讨论】:
标签: asp.net-core-2.0 asp.net-core-middleware
您可以将其作为 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);
}
}
【讨论】:
如果您需要存储用户 ID 以供将来使用,会话是您的最佳选择。 Items 只为该请求传递它。
【讨论】: