SpringSecurity启动器
Spring Security 启动器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
编写 SpringSecurityConfig 安全配置类
SpringSecurityConfig 安全控制配置类作为安全控制中心, 用于实现身份认证与授权配置功能:
- SpringSecurityConfig必须继承抽象类WebSecurityConfigurerAdapter
- 类上添加注解==@Configuration==(标识为配置类),和==@EnableWebSecurity==(启动SpringSecurity过滤器链功能)
- 一般重写以下两个方法:
- **configure(AuthenticationManagerBuilder auth)**身份认证管理器
- 认证信息提供方式
- 储存方式(内存、数据库)
- **configure(HttpSecurity http)**资源权限配置(过滤链)
- 拦截资源
- 角色权限
- 认证方式:httpBasic、httpForm
- 定制登陆页面、登陆请求地址、错误处理方式
- 自定义SpringSecurity过滤器链等
- **configure(AuthenticationManagerBuilder auth)**身份认证管理器
基于内存存储认证
@Bean
public PasswordEncoder passwordEncoder() {// 明文+随机盐值加密存储return new BCryptPasswordEncoder();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {// 数据库存储的密码必须是加密后的,不然会报错:There is no PasswordEncoder mapped for the id "null"String password = passwordEncoder().encode("123456");logger.info("加密之后存储的密码:" + password);auth.inMemoryAuthentication().withUser("user1").password(password).authorities("ADMIN");
}
HttpForm表单认证
@Override
protected void configure(HttpSecurity http) throws Exception {// 表单登录方式http.formLogin()// 登陆页面地址.loginPage("/login/page")// 表单提交地址.loginProcessingUrl("/login/form")// 用户名属性名称.usernameParameter("username")// 密码属性名称.passwordParameter("password").and().authorizeRequests() // 认证请求//登陆页面放行.antMatchers("/login/page").permitAll()//所有访问该应用的http请求都要通过身份认证才可以访问.anyRequest().authenticated(); // 注意不要少了分号
}
静态资源放行
@Override
public void configure(WebSecurity web) {web.ignoring().antMatchers("/dist/**", "/modules/**", "/plugins/**");
}
SpringSecurity底层认证流程
SpringSecurity采用过滤器链实现认证与授权
请求过滤器链:
UsernamePasswordAuthenticationFilter:请求中包括用户和密码则进行认证,认证成功标记认证成功,否则进行下一个认证过滤器。
BasicAuthenticationFilter:请求头有basic开头的信息,base64解密后认证,认证成功标记认证成功,否则进入下一认证过滤器。
其他认证过滤器
ExceptionTranslationFilter:捕获异常处理后续处理。
FilterSecurityInterceptor:认证通过后,根据资源权限配置来判断当前请求是否可以访问对应资源
SpringSecurity启动器相关推荐
- SpringSecurity+jwt安全框架
目录 1.环境搭建 1.1maven项目 1.2导入依赖 2.测试环境 3.实现安全认证 3.1原理 3.1.1实现UserDetailsService接口默认是从内存中获取密码,我们需要从数据库中来 ...
- Spring Security进行登录认证和授权
一.Spring Security内部认证流程 用户首次登录提交用户名和密码后spring security 的UsernamePasswordAuthenticationFilter把用户名密码封装 ...
- SpringBoot 居然有 44 种应用启动器
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架 个人原创100W+访问量博客:点击前往,查看更多 啥是应用启动器?Spring ...
- SpringBoot_入门-HelloWorld细节-场景启动器(starter)
前面我们编写了一个springboot,通过这个helloworld我们发现,Springboot确实简单,他只需要写一个主程序,来启动Springboot的应用,接下来我们就按照我们的业务逻辑,编写 ...
- spring boot 启动卡住_SpringBoot 居然有 44 种应用启动器
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架 个人原创100W+访问量博客:点击前往,查看更多 啥是应用启动器?Spring ...
- spring boot 启动卡住_SpringBoot集成的44种启动器,你知道几种?
点击蓝字"程序员考拉"欢迎关注! 啥是应用启动器?SpringBoot集成了spring的很多模块,比如tomcat.redis等等.你用SpringBoot搭建项目,只需要在po ...
- Spring Boot的启动器Starter详解
Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...
- SpringBoot应用场景启动器
SpringBoot主程序类,主入口 项目目录结构 下面的图中展示了上一篇博客中创建的入门程序,从这里我们开始了解关于SpringBoot程序启动原理 我们知道在Java中,每一个Java应用程序都有 ...
- Spring Boot(3)---Spring Boot启动器Starter详解
Spring Boot的启动器Starter详解 Spring Boot 简化了 Spring 应用开发,不需要配置就能运行 Spring 应用, Spring Boot 管理 Spring 容器.第 ...
最新文章
- DailyTick 开发实录 —— UI 设计
- android标题栏(titlebar)显示进度条
- mysql 平均日营业额_一条SQL语句中算日销售额和月销售额
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之10.Web_工程结构
- Linux虚拟文件系统(VFS)
- Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环
- 二级c语言需要记库函数不,【2017年必备】计算机等级二级C语言上机考试题库(熟记必过,不看后悔).doc...
- 【Java】数据结构——栈(图文)
- nodejs fs创建文件_节点FS – NodeJS创建文件,读取文件,写入文件
- ubuntu 16.04无法正常关机、重启
- 亲身经历:如何判断一个字符在a/z之前?
- 2022年上半年网络工程师下午真题及答案
- Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得
- intel cpu core/“酷睿”系列发展史,供组装机的朋友们参考
- bootmgr快速修复win7_这可能是史上最简单的一键安装虚拟机win7系统了
- 使用gimp批量处理图片
- Windows窗体之ShowWindow函数分析
- IT十大最尴尬瞬间 盖茨遭遇Win98死机列榜首
- AI视觉千亿规模市场虚席以待 初创企业看好“算法决定芯片”路径
- 计算机黑屏论文,在家写论文电脑突然黑屏自救方案,这几个方法可以解决95%以上的电脑问题...
热门文章
- 马克扎克伯格节俭_马克·扎克伯格的垃圾实在很难抢
- 马云退休启示录:第一代互联网创始人老去,谁来接棒?
- Android Scrapped or attached views may not be recycled.
- 《STL源码剖析》读书笔——(1)空间配置器
- 小灵通退市:生得伟大 死得光荣!
- [kpw] USBNetwork + WinSCP + PublicKey + PrivateKey
- 自定义ImageView实现切图的无缝对接
- 【读后感】Netty 系列之 Netty 高性能之道 - 相比 Mina 如何 ?
- PDF转CAD怎么弄?PDF文件转换快速入门
- Xilinx 官方论坛帖子、AR记录