用户认证:
**第一种方式:**通过配置文件
spring.security.user.name=atguigu
spring.security.user.password=atguigu
这时控制台不再打印密码;
**第二种方式:**通过配置类
在config包下新建SecurityConfig配置类:
/**
* @author LZR
* @create 2021-11-09-20:15
*/
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String password = passwordEncoder.encode("123");
auth.inMemoryAuthentication().withUser("lucy").password(password).roles("admin");
}
}
这时访问输入用户名密码只会停留在登录页面,IDEA控制台报错。
在配置类中添加:
@Bean
PasswordEncoder password() {
return new BCryptPasswordEncoder();
}
**第三种方式:**自定义编写实现类(常用)
新建一个SecurityConfigTest配置类:
/**
* @author LZR
* @create 2021-11-09-20:29
*/
@Configuration
public class SecurityConfigTest extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(password());
}
@Bean
PasswordEncoder password() {
return new BCryptPasswordEncoder();
}
}
在service包下新建MyUserDetailsService类实现UserDetailsService接口;
/**
* @author LZR
* @create 2021-11-09-20:33
*/
@Service("userDetailsService")
public class MyUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
List<GrantedAuthority> auths =
AuthorityUtils.commaSeparatedStringToAuthorityList("role");
return new User("marry", new BCryptPasswordEncoder().encode("123"),auths);
}
}
测试:
总结:
通过查询数据库完成认证:
引入依赖:
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok用来简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
&l