Java 获取用户详细信息
我创建了一个Java 获取用户详细信息,java,spring,spring-mvc,spring-security,userdetailsservice,Java,Spring,Spring Mvc,Spring Security,Userdetailsservice,我创建了一个@ManyToMany表。一个表中的用户和另一个表中的角色。也就是说,一个用户可以有多个角色,而一个角色可以有多个用户。我认为没有什么不寻常或错误 这就是我获得角色的方式: List<AuthoritiesEntity> roleList = userEntity.getAuthoritiesEntities(); 您可以调用mapRolesToAuthorites方法并传递roleList并定义如下函数 return new org.springframewo
@ManyToMany
表。一个表中的用户和另一个表中的角色。也就是说,一个用户可以有多个角色,而一个角色可以有多个用户。我认为没有什么不寻常或错误
这就是我获得角色的方式
:
List<AuthoritiesEntity> roleList = userEntity.getAuthoritiesEntities();
您可以调用
mapRolesToAuthorites
方法并传递roleList
并定义如下函数
return new org.springframework.security.core.userdetails.User("va@va.va", "1111",
true, true, true, true, mapRolesToAuthorites(roleList));
private Collection<? extends GrantedAuthority> mapRolesToAuthorites(Collection<Role> roles) {
return roles.stream().map(role -> new SimpleGrantedAuthority(role.getName())).collect(Collectors.toList());
}
返回新的org.springframework.security.core.userdetails.User(“va@va.va", "1111",
真的,真的,真的,真的,mapRolesToAuthorites(roleList));
私人收藏private Collection您需要修改您的getAuthoritiesEntities
private List<GrantedAuthority> getAuthoritiesEntities(Set<Role> userRoles) {
Set<GrantedAuthority> roles = new HashSet<>();
userRoles.forEach((role) -> {
roles.add(new SimpleGrantedAuthority(role.getRole()));
});
List<GrantedAuthority> grantedAuthorities = new ArrayList<>(roles);
return grantedAuthorities;
}
现在返回身份验证
return new org.springframework.security.core.userdetails.User(userEntity.getUsername(), userEntity.getPassword(), roleList);
这不起作用。是的,你的方法有效。非常感谢。但我已经找到了解决办法。我在上面展示了这个。
private List<GrantedAuthority> getAuthoritiesEntities(Set<Role> userRoles) {
Set<GrantedAuthority> roles = new HashSet<>();
userRoles.forEach((role) -> {
roles.add(new SimpleGrantedAuthority(role.getRole()));
});
List<GrantedAuthority> grantedAuthorities = new ArrayList<>(roles);
return grantedAuthorities;
}
List<AuthoritiesEntity>roleList=userEntity.getAuthoritiesEntities(userEntity.getRoles());
return new org.springframework.security.core.userdetails.User(userEntity.getUsername(), userEntity.getPassword(), roleList);