企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
可以采用下面两种方式设置账号、密码认证。 [TOC] # 1. `application.yml`配置文件中写死 ```yml spring: security: user: name: atguigu password: atguigu ``` <br/> # 2. 实现接口UserDetailsService 步骤如下: **1. 注册密码解析器** ```java @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { /** * 注册密码解析器 */ @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } } ``` **2. 实现接口UserDetailsService** ```java @Service @RequiredArgsConstructor public class LoginServiceImpl implements UserDetailsService { final AccountService accountService; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //根据username查询数据库 Account account = accountService.findByUsername(username); //判断用户名是否存在 if (account == null) { throw new UsernameNotFoundException("用户名不存在!"); } //用户权限 List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList("admin"); //返回实体User return new User(username, account.getPassword(), authorities); } } ``` **3. 测试,访问 http://localhost:8080/index** 访问系统时,检测到还没有登录则方法 loadUserByUsername 会被自动调用一次,当已经完成登录后再访问任意地址则不会再调用方法 loadUserByUsername 了。 (1)账号不存在,或账号密码错误。 ![](https://img.kancloud.cn/37/bb/37bbf6982fe14c6240416ac7b4265189_1763x473.png) (2)账号密码正确则进入服务。 >[info] 实现接口 UserDetailsService 认证后,配置文件`application.yml`中设置账号/密码就无效了。