gpt4 book ai didi

java - 具有 3 个字段的 Spring 安全身份验证而不仅仅是用户名和密码

转载 作者:搜寻专家 更新时间:2023-11-01 02:45:23 26 4
gpt4 key购买 nike

我想使用用户名+密码+域(只是一个字符串)进行身份验证。

它不是具有唯一的用户名,而是用户名+域的唯一组合。

执行此操作的最佳方法是什么?

我正在使用 grails 2.3.7

最佳答案

尝试这样的事情(代码未测试):

@Component
public class BasicAuthenticationProvider implements AuthenticationProvider {

@Autowired
private UserService registerService;

@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {

String email = authentication.getName();
String password = (String) authentication.getCredentials();
String domain = (String) authentication.getDetails();

User user = registerService.getUserByEmail(email);

if (user == null) {
throw new BadCredentialsException("Username not found.");
}
if (!password.equals(user.getPassword()) && !domain.equals(user.getDomain())) {
throw new BadCredentialsException("Wrong password.");
}

Collection<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
GrantedAuthority grantedAuthority = new GrantedAuthority() {
@Override
public String getAuthority() {
return user.getAuthority();
}
};
authorities.add(grantedAuthority);

return new UsernamePasswordAuthenticationToken(email, password, authorities);
}

@Override
public boolean supports(Class<?> arg0) {
return true;
}
}

关于java - 具有 3 个字段的 Spring 安全身份验证而不仅仅是用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com