官网文档:Hello Spring Security :: Spring Security
JDK:1.8版本,使用IDEA快速搭建一个SpringBoot web项目,或者官网上下载一个demo
一、引入依赖
因为SpringBoot可以直接集成SpringSecurity,所以POM中加上依赖直接可用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
pom中依赖如下图:
二、编写请求接口
三、验证
项目启动后,访问:http://localhost:8080/test/one,可以看到跳转到了一个登录页面,通过浏览器的开发者工具,可以看到由/test/one重定向到了登录接口/login
这个页面是security自身的,也可以配置成自己的登录页。账号和密码在未配置之前都是security默认的。账号默认是user,密码是随机生成的,在每次项目启动时会打印出来。源码在SecurityProperties中
项目启动时,打印的密码日志
登录成功后
四、设置账号密码
如果想要自己设置账号密码,有三种方式:
4.1 配置中设置
4.2 配置类中设置
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String password = encoder.encode("1234");
auth.inMemoryAuthentication().withUser("janice").password(password).roles("admin");
}
DetailsService(myUserDetailService).passwordEncoder(passwordEncoder());
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
注意:密码需要经过加密处理,可以自己实现PasswordEncoder接口,也可以使用security里的加密方法,实现类需要注册成bean,不然会报错
加密类没有注册
密码没有加密
4.3 自定义登录
最常用的一种方式,数据库查询用户信息,实现用户登录逻辑,单独一章:SpringSecurity之二:web自定义用户登录_auth.userdetailsservice-CSDN博客