SecurityContextHolder.getContext().getAuthentication()为啥Security3.1和2.0执行上面语句结果不同?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SecurityContextHolder.getContext().getAuthentication()为啥Security3.1和2.0执行上面语句结果不同?相关的知识,希望对你有一定的参考价值。

参考技术A

Spring security不完全是依赖HttpSession来保存用户对象,而是放在threadlocal里面的。

通过HttpSessionIntegrationFilter,也会同步到HttpSession,在非daoservlet环境,可以直接通过SecurityContextHolder获取,在Serlvet环境,也可以用session.getAttribute(...)得到,那个key。

<filter>

<filter-name>springSecurityFilterChain</filter-name>

<filter-class>

org.springframework.web.filter.DelegatingFilterProxy

</filter-class>

</filter>

<filter-mapping>

<filter-name>springSecurityFilterChain</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

扩展资料:

Spring Security对Web安全性的支持大量地依赖于Servlet过滤器。这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安全处理。 Spring Security提供有若干个过滤器,它们能够拦截Servlet请求,并将这些请求转给认证和访问决策管理器处理,从而增强安全性。根据自己的需要,可以使用适当的过滤器来保护自己的应用程序。

如果使用过Servlet过滤器且令其正常工作,就必须在Web应用程序的web.xml文件中使用<filter> 和<filter-mapping>元素配置它们。虽然这样做能起作用,但是它并不适用于使用依赖注入进行的配置。

参考资料来源:百度百科-spring security

以上是关于SecurityContextHolder.getContext().getAuthentication()为啥Security3.1和2.0执行上面语句结果不同?的主要内容,如果未能解决你的问题,请参考以下文章