繁体   English   中英

使用Jersey进行动态实例级授权(基于id)

[英]Dynamic instance-level authorization with Jersey (based on id)

道歉,因为我对泽西岛来说还是新手。 我一直试图找到一种使用Jersey资源进行实例级访问授权的方法,但我看到的最细粒度是角色或静态实例级权限。 我有点不解,因为它

更好地描述我的意思:假设用户拥有一组Post资源 - 可能这个用户具有Author作用。 但是,我不希望作为作者的每个用户都能够修改每个帖子。 控制它的最简单方法是什么?

这是在资源类方法中处理的那种授权吗? 我应该创建自定义授权过滤器吗? 如果是的话,那里有这样的事情的例子吗? 我有点困惑,因为它似乎是一个常见的用例。

谢谢!

在示例方面没有太多的原因是,你可能会根据自己的数据模型来处理这个问题。

举一个简单的例子,如果每个帖子都有一个所有者,那么你的资源可能看起来像这样:

@PUT
@Path("{id: [A-Fa-f0-9]+}")
@Consumes(MediaType.APPLICATION_JSON)
public T update(@Context HttpServletRequest request, final T item, @PathParam("id") final String id)
{
  final Post post = getPostbyId(id);
  if (!post.allowedToUpdate(request.getUserPrincipal())
  {
    throw new UnauthorizedException();
  }
  // Authorized, carry on
}

这个主题没有变化的结束,但如果你正在进行资源级授权,你可能希望以这种方式进行,你可以获得给定ID的资源,然后决定用户是否有权携带出要求的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM