我正在使用 Spring Security 进行 Spring+struts2+hibernate 集成进行身份验证。这是application-security.xml
文件:
<http>
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/**" filters="none" />
<form-login login-page="/login.jsp" default-target-url="/homePage.action" authentication-failure-url="/login-fail.jsp"/>
<logout logout-success-url="/logged_out.jsp" />
</http>
问题是当用户通过身份验证并且请求被转发到/homePage.action
时,我无法进入userid
课堂homePage.action
(struts 中的动作类)。
下面是代码:
UserDetails userDetails = (UserDetails)
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
调试了一段代码,发现当请求转发到时/homePage.action
,SecurityContextHolder
值被清除。
有什么办法可以让课堂userid
可用吗?homepage.action
我已经搜索了很多,但无法最终确定。似乎我必须编写一些自定义过滤器实现并挂钩到弹簧安全过滤器链(以便会话管理仅在弹簧级别完成)。
谁能给点指点?