AuthorityUtils
此类一般用于UserDetailsService的实现类中的loadUserByUsername方法
此工具类一共有三个方法:
commaSeparatedStringToAuthorityList
作用为给user账户添加一个或多个权限,用逗号分隔,底层调用的是createAuthorityList方法,唯一区别在于此方法把所有的权限包含进一个字符串参数中,只不过用逗号分隔。
@Service
public class UserDetailsServiceImpl implements UserDetailsService{
@Autowired
PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//比较用户名
if("admin".equals(username)) {
throw new UsernameNotFoundException("用户名不存在");
}
//比较密码
String pass=passwordEncoder.encode("123");//加密
return new User(username,pass,AuthorityUtils.commaSeparatedStringToAuthorityList("admin,normal"));
}
}
createAuthorityList
将权限转换为List,如
@Service
public class UserDetailsServiceImpl implements UserDetailsService{
@Autowired
PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//比较用户名
if("admin".equals(username)) {
throw new UsernameNotFoundException("用户名不存在");
}
//比较密码
String pass=passwordEncoder.encode("123");//加密
List<GrantedAuthority> list=AuthorityUtils.createAuthorityList("admin","normal");//一个权限一个参数
return new User(username,pass,list);
}
}
authorityListToSet
将GrantedAuthority对象的数组转换为Set
List<GrantedAuthority> list=AuthorityUtils.createAuthorityList("admin","normal");
Set<String> set=AuthorityUtils.authorityListToSet(list);