我正在开发 ASP.NET Web API 2 应用程序。当包含用户身份验证凭据的 HTTP 请求进入时,在它到达定义的路由(我正在为其使用属性路由)之前,我想以某种方式添加一个过滤器,以便它可以对用户进行身份验证,并在身份验证成功后,我想从存储库中获取一个 ID 并将其添加到请求正文中。
是否可以在请求到达 Controller 的 Action 之前添加过滤器?更重要的是,是否可以在过滤器认证后向请求体添加一些值?
谢谢。
最佳答案
因为我不能发表评论,所以我将其添加到这里。
本文提供了几种有关如何在 Asp.net Web Api 中处理身份验证的选项: http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
但是如果你坚持使用自定义过滤器的方式,另一个选项可能是这样的:
Add custom header to all responses in Web API
在这里,他使用 System.Web.Http.Filters 将自定义 header 添加到响应中。
public class AddCustomHeaderFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
actionExecutedContext.Response.Content.Headers.Add("customHeader", "custom value goes here");
}
}
当然会添加到过滤器中:
config.Filters.Add(new AddCustomHeaderFilter());
关于asp.net - 身份验证后手动将属性添加到请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713845/