泽西休息框架 - 授权 - 一些疑惑

时间:2016-10-22 18:00:20

标签: java android rest jersey

我在此页http://howtodoinjava.com/jersey/jersey-restful-client-api-authentication-example/|

上阅读了有关休息服务的泽西框架

我不明白一件事。 例如,当我们有

  @Path("/users")
  public class JerseyService 
  {
  @RolesAllowed("USER")
  public String doLogin(@QueryParam("username") String uname,
  @QueryParam("password") String result) 

这意味着具有角色用户的用户可以修改(通过此方法)所有用户?不仅自己在数据库中?我正在编写Android应用程序,我可以想象有人正在使用高级REST客户端的情况。他以适当的方式登录服务并修改查询,并严重破坏我的数据库。例如,将一些点写给其他用户或类似的东西。我怎么能把这种情况拒之门外呢?

2 个答案:

答案 0 :(得分:1)

Jersey(以及类似的Spring Security)对资源类型和角色进行操作。

所以,如果你允许角色"用户"为了操作资源"用户",您无法阻止特定用户仅使用泽西岛编辑其他用户。

您可以使用SecurityContext获取当前用户,并在他的凭据与用户被更改时不同时阻止危险操作。

这是SecurityContext的一个很好的例子:
https://simplapi.wordpress.com/2015/09/19/jersey-jax-rs-securitycontext-in-action/

答案 1 :(得分:0)

如果您有关于哪些用户可以访问db中的apis的详细信息,请使用过滤器过滤掉请求并链接与相关凭据匹配的每个请求,并将您想要的状态代码发送到其他请求