用户成功通过身份验证,但在我转到下一个控制器后进行身份验证后,我得到request.getUserPrincipal()
null。我正在使用websphere 7,我的应用程序是在spring mvc。
System.out.println("subject.getPrincipals(): " + subject.getPrincipals());
WSSubject.setRunAsSubject(subject);
在登录控制器中进行身份验证后,subject.getPrincipals()返回principal,但是当我转到下一个控制器时,我得到request.getUserPrincipal()
null。
的web.xml
<security-role>
<role-name>Administrator</role-name>
</security-role>
<security-constraint>
<display-name>manager_Service</display-name>
<web-resource-collection>
<web-resource-name>manageservice</web-resource-name>
<url-pattern>/manageServiceList.htm</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Administrator</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
application.xml中
<security-role>
<role-name>Administrator</role-name>
</security-role>
IBM-应用bnd.xml
<security-role name="Administrator">
<group name="Administrator" />
</security-role>
用户属于管理员组。我的所有部署描述符都设置得很好。知道我哪里弄错了吗?
答案 0 :(得分:3)
如果用户只访问了一个网址/manageServiceList.htm
,那么接触到其他网址则应该没有委托人。
答案 1 :(得分:0)
创建和配置自定义JAAS登录模块解决了问题。请参见清单4 here
不知道我以前的代码有什么问题。