springSecurity随笔
来源:互联网 发布:js判断display none 编辑:程序博客网 时间:2024/05/22 17:26
我们用springSecurity处理权限时,需要做一个持久化过程,生成securityContext保存数据,然后放入session。
SecurityContextPersistenceFilter主要是在SecurityContextRepository中保存更新一个securityContext,并将securityContext给以后的过滤器使用
本质上就是在session中生成一个securityContext——httpSession.setAttribute(springSecurityContextKey, context);
它的逻辑是这样的
一、SecurityContextRepository.loadContext(),返回一个securityContext
loadContext里面的逻辑是这样的:
1、 判断session是否存在,如果存在先尝试从session中httpSession.getAttribute(springSecurityContextKey)获取securityContext,获取不到或则session不存在,返回null
2、判断securityContext是否为null,为null则新建一个securityContextImpl
3、将当前的securityContext的信息备份到SaveToSessionResponseWrapper,用户在后面的saveContext进行比较处理
4、返回一个securityContext
二、将securiryContext放入SecurityContextHolder中
三、执行下面的过滤器chain.doFilter(holder.getRequest(), holder.getResponse());
四、运行完SecurityContextPersistenceFilter之后的所有过滤器,清空SecurityContextHolder中的securityContext,并将securityContext(这个securityContext保存有后面过滤器生成的数据)放入SecurityContextRepository中,也就是执行SecurityContextRepository.saveContext();
saveContext的逻辑如下
1、 判断SecurityContext中的authentication是否为空或者是不是Anonymous角色,
如果是的话再判断session是否存在,如果session存在并且securityContext不为空的话,就从session将securityContext删除
这个的作用是如果你的权限过期了或者不具有权限,那么session就不不应该还存在securityContext
2、判断session是否为空,如果不为空,则比较securityContext是否有更新过(会与SaveToSessionResponseWrapper中的securityContext内容作比较),有的话,就更新下一下httpSession.setAttribute(springSecurityContextKey, context);
总结:由此可见SecurityContextPersistenceFilter主要是维护securityContext给后面的过滤器使用
- springSecurity随笔
- SpringSecurity
- SpringSecurity
- SpringSecurity
- 再说springsecurity
- SpringSecurity入门
- springsecurity框架
- SpringSecurity hideUserNotFoundExceptions
- SpringSecurity配置
- SpringSecurity初识
- 关于springSecurity
- SpringSecurity地址
- SpringSecurity框架
- springSecurity注解
- springsecurity推荐
- springsecurity小结
- 随笔
- 随笔
- 如何设计一个小而美的秒杀系统(抢红包)?
- SQLite 3 中的数据类型
- Java 检查字符串是否为空
- 欢迎使用CSDN-markdown编辑器
- keras, tensorflow, jupyter的虚拟环境安装, using virtulaenv
- springSecurity随笔
- List<T> 属性排序
- 十年京东,十年技术发展—畅读《京东技术解密》
- Android Studio常用快捷键汇总
- 51nod 1405 树的距离之和 【dfs--记忆dp??树形dp??】
- mark down 使用
- hibernate系列笔记(1)---Hibernate增删改查
- JavaScript 基础
- [转]PAT甲级练习1105. Spiral Matrix (25)