由于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")