Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jhipster中按id限制URL访问控制_Java_Spring Security_Jwt_Jhipster - Fatal编程技术网

Java 在jhipster中按id限制URL访问控制

Java 在jhipster中按id限制URL访问控制,java,spring-security,jwt,jhipster,Java,Spring Security,Jwt,Jhipster,我有一个问题,每个用户都可以从URL检索其他用户的数据 例如,我有一个rest api,如下所示: @GetMapping("/getFindByPersonId/{perId}") @Timed public List<ComboVahedAmoozeshi> getFindBySkhsIdCombo(@PathVariable Long perId){ return comboVahedAmoozeshiRepository.getFindBySkhs

我有一个问题,每个用户都可以从URL检索其他用户的数据

例如,我有一个rest api,如下所示:

@GetMapping("/getFindByPersonId/{perId}")
@Timed
public List<ComboVahedAmoozeshi> getFindBySkhsIdCombo(@PathVariable Long perId){
    return comboVahedAmoozeshiRepository.getFindBySkhsIdCombo(perId);
}
@GetMapping(“/getFindByPersonId/{perId}”)
@定时
公共列表getFindBySkhsIdCombo(@PathVariable Long perId){
返回comboVahedAmoozeshiRepository.getFindBySkhsIdCombo(perId);
}
授权后,每个用户都可以更改id并获取其他用户数据,如下图所示:


是否有任何建议限制每个用户无权调用该方法?或者Jhipster是否有使用UUId隐藏id的选项?

感谢@atomferede给出正确答案。我必须在其他实体中添加jhi_user_id,并使用@postfilter注释来限制用户对数据的访问。
尽管如此,在jhipster generator中使用此选项可能是一个好主意,以增强安全级别和更快的实现。

这些是您自定义生成的实体吗?如果是,您需要自己实现对象级别的限制。可能方法安全性已经足够(请参阅),或者您必须实现访问控制列表以限制对实体()的访问。由于jhipster不知道您的域,它只是通过用户和管理员角色生成基本访问控制,以防止未经授权访问api。@AtomFred您是说jhipster考虑生成CRUD吗?此示例是定制的,但定制的和生成的jhipstere之间没有区别。例如,在每个编辑页面上,您都可以更改URL中的id并获取其他数据。这是正确的。我想说的是,这是故意的。您可以作为经过身份验证的用户访问每个实体。JHipster不知道某些实体是否必须限制为某个用户。要做到这一点,您必须实施进一步的措施(例如,通过ACL或某种post筛选器)。但是,如何限制记录?角色为的用户可以访问entityA。实体A中用户id为“”的记录与用户A绑定。角色为“”的用户B也可以访问实体A。但是,用户B也可以访问用户A记录(通过URL和API)。您可以使用ACL,或者可能已经适合您使用的用例是使用PostAuthorize筛选器。使用该过滤器,您可以定义一个表达式(比如当前用户的userId必须与返回对象的属性X匹配),如果不允许用户读取对象,则该表达式可以防止从方法返回对象。参见此处的示例。您必须为jhipster启用全局方法安全性,因为它不是由default启用的。欢迎使用。如果您认为这很有用,并且可以集成到codegenerator中,那么可以从模块/蓝图开始。