

由于jdk版本是1.8的所以需要把java.version更改,更改java1.8的后springboot就要改成2.几的,3.几的是java11以上用的

1.2创建第一个测试资源项目

启动启动类后进入Hello页面会跳转到login
默认name是user,password在后台

2. 自定义账户和密码
2.1 在application.properties中定义
# 自定义security的账户和密码--不会帮你生成密码了 spring.security.user.name=admin spring.security.user.password=123456
2.2 自定义多个账户和密码
配置类基础extends WebSecurityConfigurerAdapter然后重写configure(AuthenticationManagerBuilder auth)
@Configuration
public class MySecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication() //基于内存创建的账户 未来我们可以基于数据库
.withUser("zhangsan") //账号名
.password("123456") //密码
.roles("admin") //具有的角色
.and() //连接符
.withUser("lisi")
.password("123456")
.roles("test")
;
}
}


3. 密码加密器
public static void main(String[] args) {
//创建了密码加密器
PasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
//加密功能
String encode = passwordEncoder.encode("123456"); //把明文加密后生成了密文。
//密码匹配 第一个参数: 客户输入的明文 第二个参数: 数据库中存在的密文
boolean matches = passwordEncoder.matches("1234567", encode);
System.out.println(matches);
}
4. 获取当前用户的信息
@GetMapping("/info")
public Authentication info(){
//把当前用户信息保存在SecurityContext类中。
SecurityContext securityContext = SecurityContextHolder.getContext();
//把当前用户信息封装到Authentication类中。账户 密码 权限 角色等信息
Authentication authentication = securityContext.getAuthentication();
return authentication;
}
5. 修改security的默认配置
5.1 修改它的登录页面
1.自己在static目录下创建一个登录页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--注意: 提交路径action必须为login 提交方式必须为post. input的名称必须为username和password --> <form action="/login" method="post"> 账户:<input type="text" name="username"/><br> 密码:<input type="password" name="password"/><br> <input type="submit"/> </form> </body> </html>
2.修改Security配置类
@Override
protected void configure(HttpSecurity http) throws Exception {
//设置表单登录信息
http.formLogin()
.loginPage("/login.html") //设置自己的登录界面
//.usernameParameter("name") //设置表单的账户名称 默认为usernae
.permitAll(); //允许放行
//禁用跨域伪造请求的验证
http.csrf().disable();
//其他请求路径都要认证
http.authorizeRequests().anyRequest().authenticated();
}
5.2 设置登录成功跳转的页面
1.修改security配置类、

2.创建SuccessController类
@Controller
public class SuccessController {
@PostMapping("/success")
public String success(){
return "redirect:/success.html";
}
}
3.创建成功页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 登录成功 </body> </html>
登录失败指定跳转路径

.failureUrl("/failureurl.html")









