开发者社区> 问答> 正文

getAuthentication() 为何有时为空 有时不为空?空指针异常 配置报错 

我采用的springsecurity2 web.xml配置

<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/applicationContext.xml classpath:/applicationContext*.xml classpath:/security.xml  <!--    --> </param-value> </context-param> <!--    --> <filter> <filter-name>securityFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetBeanName</param-name> <param-value>springSecurityFilterChain</param-value> </init-param> </filter>

<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter>

<!-- --> <filter-mapping> <filter-name>securityFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

 <filter-mapping>

<filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>

security.xml中如下:
<intercept-url pattern="/admin/*" access="ROLE_ADMIN,ROLE_SERVICE,ROLE_KNOWLEDGE"/> <form-login login-page="/loginAdmin.jsp" authentication-failure-url="/loginAdmin.jsp?error=true" login-processing-url="/j_spring_check" default-target-url="/admin/index" always-use-default-target='true'/>

在admin/index下的action中 可以得到userDetails  或ManagementUser

ManagementUser mu =(ManagementUser)SecurityContextHolder.getContext().getAuthentication().getPrincipal(); System.out.println(""+mu);
但是在其他的时候访问 getAuthentication()就为空

展开
收起
kun坤 2020-05-30 23:34:03 1388 0
1 条回答
写回答
取消 提交回答
  • 今天改配置把 要使用中的action的拦截器 filters="none" 变化为相应的权限access="ROLE_ADMIN,ROLE_SERVICE"后 测试 后得到的userDetails  或ManagementUser 均不为空,可能有此可以得出 当设置filters="none" 时getAuthentication()得出为空,具体的为什么 还真不知道

    2020-05-30 23:34:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载