security

  1. 过滤器链

    1. 检查请求是否有请求信息-主要校验规则

      • UsernamePasswordAuthenticationFilter: 处理表单登录, 请求是否带用户名密码
      • BasicAuthenticationFilter: 是否有Basic码信息, 有会进行解码认证
    2. FilterSecurityInterceptor: 最后一部, 决定当前请求能不能继续, 根据不过的原因会抛出异常.

    3. ExceptionTranslationFilter: 在前FilterSecurityInterceptor有一个ExceptionTranslationFilter会处理FilterSecurityInterceptor抛出的异常, 引到用户根据前面过滤器的信息处理异常.
    4. security通过过滤器链判断用户是否授权, 读取HttpSecurity配置, 判断请求中是否携带信息, 选择需要执行的过滤器, 最后由ExceptionTranslationFilter统一进行权限认证, 如果未通过, 则会抛出异常, 由ExceptionTranslationFilter统一进行异常处理, 最后将异常信息返回给前台.

如果自定义Security过滤器 就是添加绿色的部分。

2. 认证流程

Created with Raphaël 2.1.2
  1. 认证流程处理说明

    • UsernamePasswordAuthenticationFilter: 登陆请求未认证状态进入, 设置账户密码, 还未获取权限, 设置一些用户信息IP SESSION
    • AuthenticationManager: 负责收集所有AuthenticationProvider, 循环所有AuthenticationProvider获取是否支持, 挑出一个provider来获取用户认证
    • AuthenticationProvider: 真正校验的逻辑
    • UserDetailsService: 获取UserDetails获取权限信息返回给UsernamePasswordAuthenticationFilter, 成功SuccessHandler, 失败FailureHandler
    • UserDetails: Authentication已认证
  2. 认证结果如何在多个请求间共享

    • SecurityContext: 在认证成功之前方式上下文
    • SecurityContextHolder: ThreadLocal(线程级环境变量)封装, 获取认证信息
    • SecurityContextPersisitenceFilter: 在整个过滤器链的最前面, request进来检查Session中是否有SecurityContext如果有放到SecurityContextHolder没有空过, response回来检查SecurityContextHolder是否有SecurityContext, 如果有放置到Session中, 没有空过;
  3. 获取认证用户信息

    • SecurityContextHolder.getContext().getAuthentication(): 静态方法获取
    • Controller接口方法参数: Authentication authentication Spring mvc会自动注入
    • @AuthenticationPrincipal UserDetails userDetails: 使用朱姐@AuthenticationPrincipal UserDetails 只注入用户信息

源码地址:https://github.com/Artister/tutorials-java/tree/master/security

Security 安全框架1的更多相关文章

  1. Spring Security安全框架

    今天来简单介绍一下Spring Security安全框架 简介 Spring Security 提供了基于javaEE的企业应有个你软件全面的安全服务.这里特别强调支持使用SPring框架构件的项目, ...

  2. Spring Security安全框架入门篇

    一.Spring Security相关概念 1.1..Spring Security介绍: Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安 ...

  3. Spring Security 安全框架

    一 简介:Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spr ...

  4. security安全框架,用户登录安全认证与退出

    一.创建用户表及实体类 二.编写security配置文件 <?xml version="1.0" encoding="UTF-8"?><bea ...

  5. springboot集成spring security安全框架入门篇

    一. :spring security的简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下 ...

  6. 001 Hello Security 的框架搭建

    一:STS 1.下载STS 官网:http://spring.io/tools 使用一个干净的STS进行操作学习. 2.jdk检查 3.添加自己的maven 4.使用tomcat 二:新建项目 1.新 ...

  7. Spring boot 整合spring Data JPA+Spring Security+Thymeleaf框架(上)

    近期上班太忙所以耽搁了给大家分享实战springboot 框架的使用. 以下是spring boot 整合多个框架的使用. 首先是准备工作要做好. 第一  导入框架所需的包,我们用的事maven 进行 ...

  8. security安全框架 配置

    <?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns="http://w ...

  9. SpringBoot+thymeleaf+security+vue搭建后台框架 基础篇(一)

    刚刚接触SpringBoot,说说踩过的坑,主要的还是要记录下来,供以后反省反省! 今天主要讲讲 thymeleaf+security 的搭建,SpringBoot的项目搭建应该比较简单,这里就不多说 ...

随机推荐

  1. Excel操作之级联菜单

    设置级联菜单主要用的是excel的数据验证功能.下面以简单的设置城市选择框为例: 1.准备好数据 2.给所有省份起个名称(例如:省份),然后同样方法给每个省份所对应的城市以其省份命名,(例如:南京.苏 ...

  2. Linux 下Shell的学习3-优秀demo

    优秀的DEMO cat /etc/init.d/functions   -->里面有颜色定义cat /etc/rc.d/rc.sysinit cat /etc/init.d/nfscat /et ...

  3. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  4. oracle中RAW数据类型

    近日在研究v$latch视图时,发现一个从未见过的数据类型.v$latch 中ADDR属性的数据类型为RAW(4|8)  同时也发现v$process中的ADDR属性的数据类型也为RAW(4|8).于 ...

  5. 【Try Kotlin】Kotlin Koans 代码笔记

    Kotlin Koans 心印 Introduction 1.Hello, world! Simple Functions Take a look at function syntax and mak ...

  6. scala当中的类

    1.类的定义与创建 创建一个scala class来定义我们的一个类.类当中可以定义各种属性或者方法,或者函数都可以     class Person {       //定义一个属性,叫做name的 ...

  7. DZ拿shell总结

    今天碰到一个dz的站,好久没拿了 ,拿下shell觉得应该总结一下 Uc_server默认密码 其实有了UC_SERVER就是有了网站的全部权限了,有了UC_SERVER你可以重置管理员密码 可以进后 ...

  8. POI读取单元格信息及单元格公式

    Java操作EXCEL的利器一般都是POI和JXL,鄙人只是POI的忠实粉丝.(其实我是没有用过JXL). 现在大多数的excel都是07以上的版本,所以我一般是用07的基础上使用POI. 一.读取单 ...

  9. mysql 数据增删改查基本语句

    增: insert insert into 表名(字段1,字段2,字段3......字段N) values(值1,值2,值3): 如果不申明插入那些字段,则默认所有字段. 如果一次可以插入多条数据 可 ...

  10. 5、Dubbo-监控中心

    5.1).dubbo-admin 图形化的服务管理页面:安装时需要指定注册中心地址,即可从注册中心中获取到所有的提供者/消费者进行配置管理 5.2).dubbo-monitor-simple 简单的监 ...