bounty将在6天后过期。回答此问题可获得+100的声望奖励。rahul s正在寻找标准答案。
我有多个用户,我想将它们配置到spring-boot的UserDetailsService
中进行基本身份验证。User
具有用其标记的附加字段id
。
import org.springframework.security.core.userdetails.UserDetails;
public class User implements UserDetails {
private final String username;
private final String password;
private final String id;
private static final String ROLE_USER = "ROLE_USER";
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(ROLE_USER);
return Stream.of(simpleGrantedAuthority).collect(Collectors.toList());
}
// Getter & setter
}
属性yml看起来像:
basic-auth:
oliver:
password: twist
id: 1
ruskin:
password: bond
id: 2
mark:
password: twain
id: 3
在UserDetailsService
中,我不确定如何使用应用程序属性动态配置用户。
public class UserService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) {
String encodedPassword = passwordEncoder.encode( // How to fetch password );
String id = // How to fetch id
return new User(username, encodedPassword, id);
}
}
1条答案
按热度按时间jtoj6r0c1#
你可以用不同的方法来做。
例如,让我们假设您的基本身份验证属性YAML文件,为了简单起见,只做了最少的调整:
要使您的
UserDetailsService
服务可以访问此信息,您可以使用@ConfigurationProperties
封装此信息,如下所示:在
UserDetailsService
中使用此@ConfigurationProperties
: