Java Jhipster-检查用户的角色
我在Jhipster默认生成的userresource.java中有以下方法:Java Jhipster-检查用户的角色,java,spring,spring-security,jhipster,roles,Java,Spring,Spring Security,Jhipster,Roles,我在Jhipster默认生成的userresource.java中有以下方法: @DeleteMapping("/users/{login:" + Constants.LOGIN_REGEX + "}") @PreAuthorize("hasRole(\"" + AuthoritiesConstants.ADMIN + "\")") @Transactional public ResponseEntity<Void> deleteUser(@PathVariable String l
@DeleteMapping("/users/{login:" + Constants.LOGIN_REGEX + "}")
@PreAuthorize("hasRole(\"" + AuthoritiesConstants.ADMIN + "\")")
@Transactional
public ResponseEntity<Void> deleteUser(@PathVariable String login) {
log.debug("REST request to delete User: {}", login);
userService.deleteUser(login);
return ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName, "userManagement.deleted", login)).build();
}
@DeleteMapping(“/users/{login:+Constants.login\u REGEX+”}”)
@预授权(“hasRole(\“”+AuthoritiesConstants.ADMIN+“\”))
@交易的
public ResponseEntity deleteUser(@PathVariable字符串登录){
debug(“删除用户的REST请求:{}”,登录名);
userService.deleteUser(登录);
返回ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,“userManagement.deleted”,login)).build();
}
如果要删除的用户具有特定角色,我希望对数据库进行其他更改。我需要写一些东西,比如:
Optional<User> user = this.userService.findOneByLogin(login);
if(user.get().hasRole("ROLE_USER"){
// do something
}
Optional user=this.userService.findOneByLogin(登录名);
if(user.get().hasRole(“ROLE\u user”){
//做点什么
}
User类有一个属性
Set authorities
,我想我可以用它来检查用户的角色,但我不知道怎么做。有人能帮我吗?你可以用很多方法来做,我会将此行为委托给服务而不是资源
一种方法是向User.java
类添加一个新方法,用于检查用户是否具有特定角色。类似于:
公共角色(字符串角色){
返回this.authorities.stream().map(Authority::getName).anyMatch(a->a.equals(role));
}
然后从UserService.java调用它:
public void deleteUser(字符串登录){
userRepository.findOneWithAuthoritiesByLogin(登录).ifPresent(用户->{
if(user.hasRole(AuthoritiesConstants.user)){
//在这里做你的事情
}
userRepository.delete(用户);
调试(“删除的用户:{}”,用户);
});
}
此代码也可以移动到权限计算器,请参阅