授权码,并授权中的WebAPI控制器
问题描述:
我有以下方法来检索文件夹属性:授权码,并授权中的WebAPI控制器
[HttpGet]
[Authorize]
public HttpResponseMessage GetFolder(int id)
{
FolderDto folder = _service.GetFolder(id);
if (folder == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
return Request.CreateResponse(HttpStatusCode.Found, folder);
}
我有授权的工作 - 如果用户登录,并通过一个有效的cookie的请求,行动收益。但我只想让用户获取属于他的文件夹 - 即在会员表中具有其用户ID的UserId的文件夹。
我是否应该在控制器中为每个WebAPI控制器方法执行此检查,或者是否存在我还没有了解的标准方法。我的直觉告诉我这样做:
[HttpGet]
[Authorize]
public HttpResponseMessage GetFolder(int id)
{
FolderDto folder = _service.GetFolder(id);
if (folder == null || folder.UserId != <userId>) // Or just add another check for HTTPUnauthorized
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
return Request.CreateResponse(HttpStatusCode.Found, folder);
}
想法?
答
如果您需要在仅执行其中一个操作的过程中执行此授权,那么我只需将该代码放入该操作代码即可。但是,如果您有多个操作,那么我可能会通过扩展AuthorizeAttribute
并在该过滤器中移动文件夹授权代码来创建授权过滤器。
您正在显示他们无权访问的用户文件夹,或者您只是想确保他们无权访问这个边缘案例? – 2013-04-21 00:17:51
我想确保用户无法访问不属于他们的文件夹......但我不会将其称为边缘案例。 – SB2055 2013-04-21 00:32:01