我在此页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客户端的情况。他以适当的方式登录服务并修改查询,并严重破坏我的数据库。例如,将一些点写给其他用户或类似的东西。我怎么能把这种情况拒之门外呢?
答案 0 :(得分:1)
Jersey(以及类似的Spring Security)对资源类型和角色进行操作。
所以,如果你允许角色"用户"为了操作资源"用户",您无法阻止特定用户仅使用泽西岛编辑其他用户。
您可以使用SecurityContext获取当前用户,并在他的凭据与用户被更改时不同时阻止危险操作。
这是SecurityContext的一个很好的例子:
https://simplapi.wordpress.com/2015/09/19/jersey-jax-rs-securitycontext-in-action/
答案 1 :(得分:0)
如果您有关于哪些用户可以访问db中的apis的详细信息,请使用过滤器过滤掉请求并链接与相关凭据匹配的每个请求,并将您想要的状态代码发送到其他请求