request.getUserPrincipal()得到null

时间:2011-10-17 14:10:23

标签: java security spring java-ee

用户成功通过身份验证,但在我转到下一个控制器后进行身份验证后,我得到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>

用户属于管理员组。我的所有部署描述符都设置得很好。知道我哪里弄错了吗?

2 个答案:

答案 0 :(得分:3)

如果用户只访问了一个网址/manageServiceList.htm,那么接触到其他网址则应该没有委托人。

答案 1 :(得分:0)

创建和配置自定义JAAS登录模块解决了问题。请参见清单4 here

不知道我以前的代码有什么问题。