【发布时间】:2017-10-10 17:10:24
【问题描述】:
所以我做了一个测试,看看当我使用两个授权标头(方案基本和承载)从邮递员向我的 api 发出请求时会发生什么。我创建了一个授权过滤器属性:
public class RestrictAccessToAssignedManagers : System.Web.Http.Filters.AuthorizationFilterAttribute
{
public override bool AllowMultiple
{
get { return false; }
}
public override void OnAuthorization(HttpActionContext actionContext)
{
//Perform your logic here
base.OnAuthorization(actionContext);
}
}
并将这个属性分配给我的控制器。
问题是当我同时使用两种授权时,在我的授权过滤器中,请求的授权标头为空。
这是提琴手的要求:
GET http://localhost:2328/api/values HTTP/1.1
Host: localhost:2328
Connection: keep-alive
Authorization: Basic aaa, Bearer bbb
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
Postman-Token: 0f557417-d0b7-4ca9-7df7-1df1ea0049ad
Accept: */*
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8
我的问题是为什么使用两个授权标头最终都没有授权过滤器属性?
【问题讨论】:
-
框架很可能拒绝具有多个值的请求标头,因此不填充对象。您必须检查框架源代码才能确定。
-
你能建议我上什么课吗?
标签: asp.net-web-api2 asp.net-authorization