【发布时间】:2014-03-14 15:12:33
【问题描述】:
要通过 Id 授权对项目的 GET 请求,我在自定义 AuthorizeAttribute 中查询项目以验证经过身份验证的用户具有访问权限。为了防止在ApiController 操作中重复查询,我想将对象从AuthorizeAttribute 传递给操作。
由于在ActionArgument 绑定程序运行之前在管道中调用了AuthorizeAttribute,因此我无法通过HttpActionContext.ActionArguments 传递对象。我也担心将其序列化为查询字符串并可能会超出长度限制。
传递项目的一个选项是将其存储在HttpContext.Current.Items 中,并在操作中检索时将其施放。我已经读到即使在异步操作中这也可以工作,但似乎有相当多的建议不要使用 Items 字典。
我应该简单地重新查询操作中的项目吗?使用Items 字典合适吗?是否适合为此目的使用ActionFilterAttribute 以允许访问HttpActionContext.ActionArguments,即使我正在使用它进行授权?还有其他我忽略的向量吗?
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api authorization