在身份验证后手动将属性添加到请求正文

时间:2014-03-28 13:10:39

标签: asp.net http rest asp.net-web-api asp.net-web-api2

我正在开发一个ASP.NET Web API 2应用程序。当一个HTTP请求进入其中包含用户身份验证凭据时,在它到达定义的路由(我正在使用属性路由)之前,我想以某种方式添加一个过滤器,以便它可以验证用户,并在成功验证,我想从存储库中获取一个ID并将其添加到请求正文中。

是否可以在请求到达控制器的操作之前添加过滤器?更重要的是,是否可以在过滤器进行身份验证后为请求正文添加一些值?

感谢。

2 个答案:

答案 0 :(得分:2)

我无法评论我在这里添加它。

本文提供了有关如何在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为响应添加了自定义标头。

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());

答案 1 :(得分:1)

我认为修改客户端在Request主体和标头中发送的内容绝不是一个好主意。我相信您可以在Proeperties对象上使用Request属性。整个管道都可以访问它。

Request.Properties.Add("UserId", "2");