使用相同的路径和不同的http方法保护REST URL

时间:2014-03-24 18:17:40

标签: rest shiro

我有一种情况需要一些帮助。我有四个具有相同路径和不同http方法的REST URL

/api/users/** GET,POST,PUT,DELETE

我想用Shiro来制作PUP,POST,DELETE并保持GET是匿名的。我配置了以下网址但没有运气

/api/users/** =rest[user:update,user:delete,user:create]
/api/users/** =anon

1 个答案:

答案 0 :(得分:0)

也许你可以这样做:

/api/users/**=rest[user]

然后,这取决于您如何创建REST API。使用JAX-RS实现(例如Jersey),您可以执行以下操作:

@Path("/api/users")
public class SomeResource {

    @RequiresPermissions("user:read")
    @GET
    public Response getResource() {..}

    @RequiresPermissions("user:create")
    @PUT
    public Response putResource() {..}

    @RequiresPermissions("user:update")
    @POST
    public Response postResource() {..}

    @RequiresPermissions("user:delete")
    @DELETE
    public Response deleteResource() {..}
}

这假设您要使用基于注释的授权。您还可以使用SecurityUtils.getSubject()机制。