我有以下方法来检索文件夹:
[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传递请求,则操作会继续。但我只想让用户获得他的文件夹 - 也就是说,在会员表中具有UserID的用户ID的文件夹。
我是否应该在控制器中为每个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);
}
思想?
答案 0 :(得分:0)
如果您只需要在执行其中一个操作期间执行此授权,那么我只需将该代码放入该操作代码中。但是,如果您有多个操作,那么我可能会通过扩展AuthorizeAttribute
并在该过滤器中移动文件夹授权的代码来创建授权过滤器。