【发布时间】:2014-12-05 21:09:27
【问题描述】:
我有一个来自 VS2013 SPA 模板 (web api 2.2) 的网站,它利用了 ASP.NET Identity 2.1,一切运行良好。我的控制器方法如下所示:
[Authorize]
public Api.Models.Widget Get(int widgetId)
{
var requestingUserId = Int32.Parse(Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity));
...
}
它按预期工作:
- 未授权用户无权访问
- 授权用户进入后,我可以获取他们的用户ID
但是我现在想修改应用程序以防止过多的 API 请求。我计划检查该特定用户 ID 是否在特定时间范围内发出了一定数量的请求。我正在寻找最佳地点的建议。
我不想在每个控制器中都重复这个逻辑,看起来动作过滤器可能是最好的地方。但是由于这需要读取用户 ID,而且我不确定过滤器的顺序是否得到保证,所以如果可能的话,派生已经被调用以进行授权的过滤器并添加我的额外逻辑也可能是有意义的。
我想知道是否有人可以举一个做类似事情的例子?似乎不是“授权”,而是在自定义身份验证过滤器中,我不确定如何将其结合在一起。
感谢您的任何建议...
【问题讨论】:
标签: asp.net asp.net-web-api asp.net-identity asp.net-web-api2 asp.net-authorization