案例(写死的用户密码)
package com.zking.security.service;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 登录服务类,实现Spring Security的UserDetailsService接口
*/
@Service
public class LoginService implements UserDetailsService {
/**
* 根据用户名加载用户信息
*
* @param username 用户名
* @return UserDetails对象,包含用户信息
* @throws UsernameNotFoundException 如果用户不存在,则抛出此异常
*/
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 检查用户名是否匹配预设值,如果不匹配则抛出异常
if (!"jack".equals(username)){
throw new UsernameNotFoundException("用户名不存在");
}
// 预设的用户密码
String pwd = "$2a$10$k8GypMMYDjEr804BC.jR0O.ZSxWn082oWgvuilomBiN31ajb43XVO";
// 用户角色及权限
//检查用户名是否为 jack:检查传入的用户名是否为 "jack"。
//如果不是 "jack",则抛出 UsernameNotFoundException 异常。
//如果是 "jack",则继续执行。
//一个用户拥有一个或多个角色,每个角色可能拥有多个权限。
List<GrantedAuthority> authorities=AuthorityUtils.commaSeparatedStringToAuthorityList("sys:prod:list,ROLE_jack