2011-10-17 44 views
4

用戶成功認證但認證後,當我去下一個控制器我得到request.getUserPrincipal() null。我正在使用websphere 7,我的應用程序是在春季mvc。request.getUserPrincipal()得到空

System.out.println("subject.getPrincipals(): " + subject.getPrincipals()); 

    WSSubject.setRunAsSubject(subject); 

在登錄控制器subject.getPrincipals認證()返回本金,但是當我去到一個控制器我request.getUserPrincipal()空後。

的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

創建和配置自定義JAAS登錄模塊可解決問題。見清單4 here

不知道我以前的代碼有什麼問題。

3

它接縫,你只守護一個網址/manageServiceList.htm所以如果用戶訪問其他網址,那麼應該沒有任何委託人。

+0

會有其他資源。但這不是我的問題。無論我訪問受保護資源還是不受保護,都應該有主體。 –

+0

這可能是你想要的,但不是它的工作方式:當我沒有記錯的時候,你必須警惕資源才能獲得帶有主體的請求。但當然,保護資源不受限制是合法的(全部允許)。 – Ralph

+0

看到我的問題:「在登錄控制器subject.getPrincipals()中的身份驗證返回主體,但當我去下一個控制器時,我得到了request.getUserPrincipal()null」。問題是什麼?爲什麼我知道它爲空? –