【发布时间】:2013-02-03 00:46:45
【问题描述】:
我正在 Spring 中创建身份验证服务。
我正在使用 UserDetailsService 获取表单变量,但我发现 loadUserByUsername 只有一个变量 - userName。
如何获取密码?
public class userAuthentication implements UserDetailsService{
private @Autowired
ASPWebServicesUtils aspWebServicesUtils;
@Override
public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException {
//how to get password ?
User user = new User("test", "test", true, true, true, true, getAuthorities(true));
return user;
}
private List<GrantedAuthority> getAuthorities(boolean isAdmin){
List<GrantedAuthority> authorityList = new ArrayList<GrantedAuthority>(2);
authorityList.add(new SimpleGrantedAuthority("USER_ROLE"));
if(isAdmin){
authorityList.add(new SimpleGrantedAuthority("ADMIN_ROLE"));
}
return authorityList;
}
//...
}
谢谢
【问题讨论】:
-
我有提供信息的webserwice,是否存在用户。我必须将登录名和密码传递给这个 webserwice。
-
您可能应该阅读
UserDetailsService上的FAQ 和documentation 以及它的用途。它仅用于将数据加载到框架中。 -
没有回答你的问题,但只要你有一个带有大量随机参数的构造函数,它就是构建器模式的标志。例如:User.builder().accountExpired(false).accountLocked(false).credentialsExpired(false).roles("ROLE_USER").disabled(false).build();优于 new User(...)
标签: java spring-security