【发布时间】:2021-01-07 00:23:28
【问题描述】:
我正在编写一个带有 spring boot、angularjs、jpa 的用户管理系统......所有用户的功能都将分配给 grantedauthorities 并将发送回 angularjs 以相应地设计主页但即使我正在分配ArrayList 而不是 HashSet 的权限,仍然删除了重复的功能。
循环结束时grantedauthorities 的大小为 12,一切正常,但当它返回响应时,重复项被删除。
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserJpaRepository userJpaRepository;
@Autowired
private RoleFeaturesJpaRepository roleFeaturesJpaRepository;
@Override
@Transactional
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userJpaRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException(
"Opps! user not found with user-name: " + username);
}
return new org.springframework.security.core.userdetails.User(
user.getUsername(), user.getPassword(),
getAuthorities(user)
);
}
private Collection<GrantedAuthority> getAuthorities(User user) {
ArrayList<GrantedAuthority> grantedAuthorities = new ArrayList<>();
Role role = user.getRoles();
for (Features features : role.getFeatures()){
RoleFeaturesPK roleFeaturesPK = new RoleFeaturesPK();
roleFeaturesPK.setRoleId(role.getId());
roleFeaturesPK.setFeatureId(features.getId());
Optional<RoleFeatures> roleFeatures = roleFeaturesJpaRepository.findById(roleFeaturesPK);
RoleFeatures features_entity = roleFeatures.get();
grantedAuthorities.add(new SimpleGrantedAuthority(features.getName()));
grantedAuthorities.add(new SimpleGrantedAuthority(features_entity.getReadOption()));
grantedAuthorities.add(new SimpleGrantedAuthority(features_entity.getReadWriteOption()));
}
return grantedAuthorities;
}
}
【问题讨论】:
标签: java spring-boot hibernate jpa spring-security