05 Spring Boot 整合Spring Security
时间:2022-07-22
本文章向大家介绍05 Spring Boot 整合Spring Security,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
整合Spring Security
整合方法
- 创建项目时选择security依赖或在pom中添加security依赖
- 建立
SpringSecurityConfig
类,继承WebSecurityConfigurerAdapter
方法 - 在刚刚创建的类上添加
@EnableWebSecurity
注解 - 设置授权规则 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() //所有人均可访问 .antMatchers("/level1/**").hasRole("vip1") //vip1可访问 .antMatchers("/level2/**").hasRole("vip2") //vip3可访问 .antMatchers("/level3/**").hasRole("vip3"); //vip3可访问 http.formLogin() //启动security自带login页面 .loginPage("/toLogin") //设置自定义login页面 .loginProcessingUrl("/login") //设置自定义login认证页面 .usernameParameter("user") //设置login页面中的账户参数名 .passwordParameter("pwd"); //设置login页面中的密码参数名 http.logout() //logout:添加登出页面 .logoutSuccessUrl("/"); //logoutSuccessUrl:添加登出后跳转页面 http.rememberMe() //开启记住我功能 .rememberMeParameter("rem"); //设置记住我参数名 }
- 设置角色 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("shimeath").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2", "vip3") .and() .withUser("root").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1", "vip2", "vip3") .and() .withUser("guest").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1"); }
Spring security整合thymeleaf
- 添加maven依赖 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> 2.添加命名空间 xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
- 常用方法 sec:authorize <!-- 授权 --> sec:authentication <!-- 认证方式 --> <!-- 函数 --> isAuthenticated() <!-- 已登录吗 --> hasRole('vip1') <!-- 判断角色 -->
- 这或许是对小白最友好的python入门了吧——4,列表
- 【深度学习】自动驾驶:使用深度学习预测汽车的转向角度
- 这或许是对小白最友好的python入门了吧——3,数字处理
- 数据库恢复方案
- 这或许是对小白最友好的python入门了吧——2,变量和字符串
- Extjs4.2+webAPI+EF实现分页以及webapi的数据传值(续)
- Linux 系统安全与优化配置
- Extjs 项目中常用的小技巧,也许你用得着(2)
- 这或许是对小白最友好的python入门了吧——16,输入文本
- Extjs 项目中常用的小技巧,也许你用得着(1)
- Extjs4.2+webAPI+EF实现分页以及webapi的数据传值
- 【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别
- 这或许是对小白最友好的python入门了吧——15,嵌套
- C#新功能--命名参数与可选参数
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- this到底是什么?
- ES5面向对象基础
- 面试官问我啥是OAuth 2.0,两个案例讲懂他~
- 年轻代频繁ParNew GC,导致http服务rt飙高
- JWT 使用 nimbus-jose-jwt 进行解码
- linux centos7 编译安装python3 --shell脚本
- Qt音视频开发36-USB摄像头解码qcamera方案
- JS中属性描述符
- CSS3实现彩色炫酷文字
- 动态import来拆分代码后发布问题
- webpack中动态import()打包后的文件名称定义
- springboot通过javaconfig配置jackson
- ASR6505 LoRaWAN通信(二)
- PHP下ajax跨域的解决方案之jsonp实例分析
- PHP终止脚本执行的实例代码