代码拉取完成,页面将自动刷新
同步操作将从 罗小爬/spring-cloud-demo 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package com.luo.sc.oidc.authserver.handler.login;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.util.Map;
/**
* 通用登录 - 用户查询及认证服务 - 账号、密码验证的默认实现<br/>
* 注:兼容原Spring Security UserDetailsService实现
*
* @author luohq
* @version 1.0.0
* @date 2022-03-03
*/
public class UniLoginUserDetailsPasswordMatcherService implements UniLoginUserDetailsService {
/**
* 登录表单常量定义
*/
private static final String USERNAME_PARAMETER = "username";
private static final String PASSWORD_PARAMETER = "password";
/**
* Spring Security UserDetailsService实现
*/
private UserDetailsService userDetailsService;
/**
* 密码编码器
*/
private PasswordEncoder passwordEncoder;
public UniLoginUserDetailsPasswordMatcherService(UserDetailsService userDetailsService, PasswordEncoder passwordEncoder) {
this.userDetailsService = userDetailsService;
this.passwordEncoder = passwordEncoder;
}
@Override
public UniLoginUserDetails loadUserByAuthParams(Map<String, String> authParams) throws UsernameNotFoundException {
//验证账号、密码相关表单参数非空
if (!authParams.containsKey(USERNAME_PARAMETER) || !authParams.containsKey(PASSWORD_PARAMETER)) {
throw new UsernameNotFoundException("用户名或密码为空");
}
//获取用户名参数
String username = authParams.get(USERNAME_PARAMETER);
//调用SpringSecurity UserDetailsService查询用户
UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
//转换SpringSecurity UserDetails为UniLoginUserDetails
return new UniLoginUserDetails(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities(), null);
}
@Override
public void authenticateUser(Map<String, String> authParams, UniLoginUserDetails uniLoginUserDetails) throws AuthenticationException {
//比较密码是否一致
Boolean passwordMatch = this.passwordEncoder.matches(authParams.get(PASSWORD_PARAMETER), uniLoginUserDetails.getPassword());
//若不一致,则抛出异常
if (!passwordMatch) {
throw new BadCredentialsException("密码不正确");
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。