SecurityContextHolder存储SecurityContext的方式根据应用场景不同也有区别:
(1)单机系统 , 即应用从开启到关闭的整个生命周期只有一个用户在使用 。 由于整个应用只需要保存一个SecurityContext(安全上下文即可)
(2)多用户系统 , 比如典型的Web系统 , 整个生命周期可能同时有多个用户在使用 。 这时候应用需要保存多个SecurityContext(安全上下文) , 需要利用ThreadLocal进行保存 , 每个线程都可以利用ThreadLocal获取其自己的SecurityContext , 及安全上下文 。 ThreadLocal内部会用数组来存储多个对象的 。 原理是 , ThreadLocal会为每个线程开辟一个存储区域 , 来存储相应的对象 。
Authentication:用户信息的表示
在SecurityContextHolder中存储了当前与系统交互的用户的信息 。 Spring Security使用一个Authentication 对象来表示这些信息 。
Authentication 主要包含了:
- 用户权限集合
- 用户证书(密码)
- 细节(Details)
- Principal(就是这个用户的账户信息)
UsernamePasswordAuthenticationToken authenticationToken
=new UsernamePasswordAuthenticationToken(usernull null);
authenticationToken.setDetails(new WebAuthenticationDetailsSource()
.buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
【spring|SpringSecurity过滤器原理】原文地址:
http://www.cnblogs.com/ins1mnia/p/15635130.html
- spring|什么牌子的蓝牙耳机听歌好? 实惠好用蓝牙耳机品牌
- spring|创业者须知的商界潜定律:只要我的人脉还在,白手起家就不难
- spring|我的世界:Mojang迁移又爆问题!账号被盗、购买的JAVA版mc消失?
- spring|油管博主将90年代的芭比娃娃电脑改装成当下主流的游戏台式机
- spring|卢伟冰:高端机全面OLED化的今天,大家怎么看待LCD屏的需求?
- spring|三星S22 Ultra首发:这才是让人心甘情愿购买的万元机皇!
- spring|久违的高性能平板电脑精选,一文为你解惑所有
- spring|vivoNEX5有盼头,天玑9000帮忙!18+1TB并不贵
- spring|还是没忍住!红米K50电竞版突然官宣,外观、硬件、价格都很清晰
- 酷睿处理器|Spring Boot 还是最先进的java框架吗
