【发布时间】:2016-12-27 20:44:29
【问题描述】:
我有如下所列的 Web API 方法,用于REST 服务。这是为了获取 InventoryAuditors 的所有用户信息。只有授权的 InventoryAuditor 用户才能访问此资源。
[RoutePrefix("api/users")]
public class UsersController : ApiController
{
[Authorize(Roles="InventoryAuditor")]
[Route("")]
[HttpGet]
public List<User> GetAllUsers()
{
//Return list of users
}
}
public class User
{
public int UserID { get; set; }
public string FirstName { get; set; }
}
问题
- 此资源是否可缓存用于
shared caches(如Forward Proxies和其他中间缓存)? - 如果是,共享缓存如何执行授权检查 - 缓存如何知道必须仅为 InventoryAuditors 提供资源?
- 标题应如何使该授权表示可缓存?
或者HTTP Caching不是全部用于授权资源的情况下?
注意:文章"Caching Tutorial for Web Authors and Webmasters"说:
默认情况下,使用 HTTP 身份验证保护的页面被认为是私有的;它们不会被共享缓存保存。但是,您可以使用 Cache-Control: public header 公开经过身份验证的页面;然后,符合 HTTP 1.1 的缓存将允许它们被缓存。
参考文献
【问题讨论】:
标签: rest http caching http-caching