spring-security获取不到Authentication
在security框架的使用中,发现通过security获取到已登录的用户信息时,会出现Authentication为空的情况。填下坑
问题场景:
需要在登陆主页后在界面上展示出已登录的用户信息,但是发现获取不到
SecurityContextHolder.getContext() = null
后来在security.xml中检查了配置匿名访问的规则
<!-- 这句规则针对所有的以/rest/开头的请求进行放行 -->
<http pattern="/rest/**" security="none"/>
而界面上获取登录用户名的请求URL:../rest/login/name
此时,该请求在进入过滤器中检查访问权限时,检查到匹配到匿名访问的规则,放行。在security中该条请求的身份为anonymous user,不是认证用户,是无法获取上下文的。
so,只有认证请求的url才能访问到Securitycontext的内部信息。