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的项目搭建应该比较简单,这里就不多说 ...
随机推荐
- sql join实例图解
https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ 1. inner join: 所有满足join条件的两个table对应 ...
- linux下pgAdmin4安装
首先到pgAdmin4官方网站下载安装包:https://www.pgadmin.org/download/ 我下载的是3.0; 到文件所在目录执行安装命令: sudo pip install ./p ...
- [翻译] JHChainableAnimations
JHChainableAnimations - (void)animationType_01 { /* * 缩放到0.8倍(执行spring动画效果的缩放)持续时间0.5s,完成了之后移动100的距离 ...
- [翻译] BFKit
BFKit BFKit is a collection of useful classes to develop Apps faster. BFKit是一个有用的工具集合,帮助你快速开发. Insta ...
- 企业级Ngnix基于域名的配置_server
普通的nginx配置 egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf.default 更改nginx的配置文件-->注意空格 ...
- C++课堂作业(2)
github的链接: https://github.com/deepYY/object-oriented/tree/master/PAT.1025 题目 给定一个常数K以及一个单链表L,请编写程序将L ...
- 带参sql$和#的区别(注解)
主要区别就是#带双引号,$不带 例如:#{id}代表'id',${id}代表id 下面是Mybatis @Select注解方式的sql @Select("select id,name fro ...
- 劳动节前得空半天-总结一下最近使用的LINUX命令
一.搜索文件 1.locate xxx.log 全盘搜索xxx.log文件 2.which java 查找命令 3.ll xxx.log 在目录下查找文件 二.搜索内 ...
- MVC渲染文章内容的html标签转义
文章详情页一般从数据库中取出文章内容,文章内容一般含有 等html标签,MVC中如果直接从模型输出文章内容,会把html标签转义变成<>等,这时候是要把转义后的标签变成html标签, ...
- [luogu1979] 华容道
题面 先讲点无关的,这道题是真的恶心... 好了,第一眼看到这道题,肯定是准备暴搜的,但是想了一想,省选难度的题目不可能一上来就让你暴搜吧,于是开启了无穷无尽的分析,我们不妨设指定棋子叫做移动 ...