Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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-检查用户的角色_Java_Spring_Spring Security_Jhipster_Roles - Fatal编程技术网

Java Jhipster-检查用户的角色

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

我在Jhipster默认生成的userresource.java中有以下方法:

@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(用户);
调试(“删除的用户:{}”,用户);
});
}

此代码也可以移动到权限计算器,请参阅