2 xiaoy81 xiaoy81 于 2016.03.01 20:50 提问

SpringSecurity缓存问题

Security在securityContextPersistenceFilter这个过滤器中把SecurityContextHolder清除了,

finally {

//先从SecurityContextHolder获取SecurityContext实例

SecurityContext contextAfterChainExecution = SecurityContextHolder.getContext();

// Crucial removal of SecurityContextHolder contents - do this before anything else.

//再把SecurityContext实例从SecurityContextHolder中清空

SecurityContextHolder.clearContext();

//将SecurityContext实例持久化到session中

repo.saveContext(contextAfterChainExecution, holder.getRequest(), holder.getResponse());

request.removeAttribute(FILTER_APPLIED);

if (debug) {

logger.debug("SecurityContextHolder now cleared, as request processing completed");

}

}

而在sec:authorize标签鉴权时,还是使用Authentication auth = SecurityContextHolder.getContext().getAuthentication();这样获取的值为null,标签无法使用,这个问题怎么解决,框架这么做不合理啊。

1个回答

devmiao
devmiao   Ds   Rxr 2016.03.01 21:42
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spring security的缓存
  刚给系统做了一个修改登录用户密码的小功能,用了一下发现数据库的密码已经修改了,可是用新密码死活也登不进去,用原来的密码竟然进去了,在网上找了一下发现spring security为了提高效率,自己维护了一个缓存,它将第一次登录的用户放入了缓存,在第二次登陆时没有访问数据库,而是直接在缓存中拿到数据。要改掉这问题其实很简单: userCache提供了两种实现: NullUserC
【Spring实战】----security4.1.3认证的过程以及原请求信息的缓存及恢复(RequestCache)
一、先看下认证过程 认证过程分为7步: 1.用户访问网站,打开了一个链接(origin url)。 2.请求发送给服务器,服务器判断用户请求了受保护的资源。 3.由于用户没有登录,服务器重定向到登录页面 4.填写表单,点击登录 5.浏览器将用户名密码以表单形式发送给服务器 6.服务器验证用户名密码。成功,进入到下一步。否则要求用户重新认证(第三步) 7.服务
SpringSecurity 禁用用户后 实现清除指定用户缓存
介绍之前如果对cookie,session,cache不熟悉的,可参照此篇文章 https://blog.csdn.net/u012251421/article/details/45333315 问题出现的场景: 一般在类似于信息管理平台,通常会有对用户的状态进行操作,我遇到的问题是,当管理员用户,禁用普通用户后,普通用户仍然可以登录。 出现的原因: SpringSecurity在用户登...
权限学习 -- Spring Security数据库、缓存、自定义决策
数据库管理 Spring Security的核心处理流程:当一个用户登录时,会先执行身份认证,如果身份认证未通过会邀请用户重新认证。当用户身份认证通过后会调用角色管理器判断他是否可以访问。如果要实现数据库管理用户及权限就需要自定义用户登录功能。Spring Security为我们提供了UserDetailService接口,该接口只有一个方法UserDetail loadUserByUser
springsecurity
springsecurity demo案例 springsecurity springsecurity springsecurity
党员spring security专用
党员springsecurity专用党员springsecurity专用党员springsecurity专用党员springsecurity专用党员springsecurity专用
7. Spring Security缓存UserDetails
Spring Security提供了一个实现了可以缓存UserDetails的UserDetailsService实现类,CachingUserDetailsService。该类的构造接收一个用于真正加载UserDetails的UserDetailsService实现类。当需要加载UserDetails时,其首先会从缓存中获取,如果缓存中没有对应的UserDetails存在,则使用持有的UserD
SpringMVC添加spring-security静态资源加载问题
今天给项目集成security 导致所有静态资源均请求不到 已经设置了静态资源不用经过spring-security过滤,依然不生效 原因:在spring中没有对静态资源作相应的配置,所以单方设置spring-security例外是无效的 解决方式: 1、在spring中对静态资源的访问做配置后,接着在spring-security中设置不过滤、 2、利用tomcat   的defaul
Ajax 缓存问题,Ajax 缓存问题
Ajax 缓存问题 Ajax 缓存问题 Ajax 缓存问题 Ajax 缓存问题
SpringSecurity中文文档.zip
SpringSecurity中文文档 2个 学习SpringSecurity必备