Security 安全框架1
security
过滤器链
检查请求是否有请求信息-主要校验规则
UsernamePasswordAuthenticationFilter
: 处理表单登录, 请求是否带用户名密码BasicAuthenticationFilter
: 是否有Basic码信息, 有会进行解码认证
FilterSecurityInterceptor
: 最后一部, 决定当前请求能不能继续, 根据不过的原因会抛出异常.ExceptionTranslationFilter
: 在前FilterSecurityInterceptor
有一个ExceptionTranslationFilter
会处理FilterSecurityInterceptor
抛出的异常, 引到用户根据前面过滤器的信息处理异常.- security通过过滤器链判断用户是否授权, 读取HttpSecurity配置, 判断请求中是否携带信息, 选择需要执行的过滤器, 最后由
ExceptionTranslationFilter
统一进行权限认证, 如果未通过, 则会抛出异常, 由ExceptionTranslationFilter
统一进行异常处理, 最后将异常信息返回给前台.
如果自定义Security过滤器 就是添加绿色的部分。
2. 认证流程
认证流程处理说明
UsernamePasswordAuthenticationFilter
: 登陆请求未认证状态进入, 设置账户密码, 还未获取权限, 设置一些用户信息IP SESSIONAuthenticationManager
: 负责收集所有AuthenticationProvider
, 循环所有AuthenticationProvider
获取是否支持, 挑出一个provider来获取用户认证AuthenticationProvider
: 真正校验的逻辑UserDetailsService
: 获取UserDetails
获取权限信息返回给UsernamePasswordAuthenticationFilter
, 成功SuccessHandler
, 失败FailureHandler
UserDetails
:Authentication
已认证
认证结果如何在多个请求间共享
SecurityContext
: 在认证成功之前方式上下文SecurityContextHolder
: ThreadLocal(线程级环境变量)封装, 获取认证信息SecurityContextPersisitenceFilter
: 在整个过滤器链的最前面, request进来检查Session中是否有SecurityContext如果有放到SecurityContextHolder
没有空过, response回来检查SecurityContextHolder
是否有SecurityContext
, 如果有放置到Session中, 没有空过;
获取认证用户信息
- SecurityContextHolder.getContext().getAuthentication(): 静态方法获取
- Controller接口方法参数: Authentication authentication Spring mvc会自动注入
- @AuthenticationPrincipal UserDetails userDetails: 使用朱姐@AuthenticationPrincipal UserDetails 只注入用户信息
源码地址:https://github.com/Artister/tutorials-java/tree/master/security
Security 安全框架1的更多相关文章
- Spring Security安全框架
今天来简单介绍一下Spring Security安全框架 简介 Spring Security 提供了基于javaEE的企业应有个你软件全面的安全服务.这里特别强调支持使用SPring框架构件的项目, ...
- Spring Security安全框架入门篇
一.Spring Security相关概念 1.1..Spring Security介绍: Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安 ...
- Spring Security 安全框架
一 简介:Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spr ...
- security安全框架,用户登录安全认证与退出
一.创建用户表及实体类 二.编写security配置文件 <?xml version="1.0" encoding="UTF-8"?><bea ...
- springboot集成spring security安全框架入门篇
一. :spring security的简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下 ...
- 001 Hello Security 的框架搭建
一:STS 1.下载STS 官网:http://spring.io/tools 使用一个干净的STS进行操作学习. 2.jdk检查 3.添加自己的maven 4.使用tomcat 二:新建项目 1.新 ...
- Spring boot 整合spring Data JPA+Spring Security+Thymeleaf框架(上)
近期上班太忙所以耽搁了给大家分享实战springboot 框架的使用. 以下是spring boot 整合多个框架的使用. 首先是准备工作要做好. 第一 导入框架所需的包,我们用的事maven 进行 ...
- security安全框架 配置
<?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns="http://w ...
- SpringBoot+thymeleaf+security+vue搭建后台框架 基础篇(一)
刚刚接触SpringBoot,说说踩过的坑,主要的还是要记录下来,供以后反省反省! 今天主要讲讲 thymeleaf+security 的搭建,SpringBoot的项目搭建应该比较简单,这里就不多说 ...
随机推荐
- Visual Staudio 2015 打开指定文件,定位到指定文件目录下
Visual Staudio 2015 项目定位文件位置 每次使用的Visual Staudio 2015 写代码的时候总是打开了.cs文件或xaml文件时, 还要手动去找该 文件位置,每次都要翻好大 ...
- Zip压缩/解压缩(文件夹)
#PS2.0压缩为.zip文件: $zip = "D:\audit_log\test.zip"New-Item $zip -ItemType file$shellApplicati ...
- 点开无线显示"已连接 安全",但是点击下面无线图标却显示"无法连接internet",解决方案
管理员权限运行“命令提示符” 输入:netsh winsock reset 然后重启电脑即可
- Asp.Net MVC 开发技巧(二)
Linq查询 Linq的使用大体分为两种:语句表达式 和 方法 首先,我们要在控制器中定义好context private ApplicationDbContext db = new Appli ...
- ZT Android的引用计数(强弱指针)技术及一些问题
Android的引用计数(强弱指针)技术及一些问题 分类: Android 2013-06-07 18:25 844人阅读 评论(4) 收藏 举报 目录(?)[+] Android C++框架层的引用 ...
- iOS开发之UIView
在iPhone里你能看到的.摸到的,都是UIView. 视图坐标系统: UIKit中的坐标都是基于这样的坐标系统:以左上角为坐标的原点,原点向下和向右为坐标轴方向. 坐标值由浮点数来表示,内容的布局和 ...
- Maven编译Java程序配置
Hive 需要在工程里添加的Jar包: hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar $HIVE_HOME/lib/hive-exe ...
- Java对html标签的过滤和清洗
OWASP HTML Sanitizer 是一个简单快捷的java类库,主要用于放置XSS 优点如下: 1.使用简单.不需要繁琐的xml配置,只用在代码中少量的编码 2.由Mike Samuel(谷歌 ...
- Kali-linux控制Meterpreter
Meterpreter是Metasploit框架中的一个杀手锏,通常作为利用漏洞后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给用户一个控制通道.当使用Armitage.MSFCLI或MSFCONS ...
- 學習Extjs比較好的資源
http://www.qeefee.com 學習mvc extjs等比較好 还有就是extjs文档 要多看extjs文档中的方法源码 egg:图片 点击format.js看源码如何定义