0

我有以下方法来检索文件夹:

    [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);
    }

想法?

4

1 回答 1

0

如果您只需要在执行其中一个操作期间执行此授权,那么我只需将该代码放入该操作代码中。但是,如果您有多个操作,那么我可能会通过扩展AuthorizeAttribute和移动该过滤器中的文件夹授权代码来创建一个授权过滤器。

于 2013-04-21T10:16:59.800 回答