2011-12-15 72 views
0

我是Spring Security的新手。我使用JSF2使用Spring Security 3.三個問題:jsf spring security用戶信息

  1. 如何訪問,從會話管理的bean,用戶信息(姓名,密碼,角色)當前登錄的用戶?

    爲了在視圖中使用它,例如根據用戶的角色呈現元素。

  2. 如何知道用戶是否已登錄?爲了在視圖中顯示用戶未登錄的「登錄鏈接」或用戶登錄的「登出鏈接」,必須使用Spring Security的哪個屬性來存儲此信息並在視圖中使用它?

  3. 「登錄鏈接」只是對登錄頁面的URL的GET請求。但是我怎樣才能顯示「註銷鏈接」?難道它必須是一個POST請求,並使用「H:commandLink」像這樣?:

    <h:commandLink value="Logout" action="#{request.contextPath}/j_spring_security_logout" /> 
    

    或者,它可以是一個GET請求?:

    <h:link value="Logout" outcome="#{request.contextPath}/j_spring_security_logout" /> 
    

感謝您非常高級。

+1

也許這可以提供一些幫助 - http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html –

回答

1
  1. 對象驗證誰拯救這個屬性,你可以在你的managedBean下一行獲得:

    Authentication auth = SecurityContextHolder.getContext().getAuthentication();

  2. ,如果他的身份不是AnonymousAuthenticationToken一個instace用戶登錄,在您的spring-security-context.xml中,您必須定義Spring攔截的url。

    的第一個攔截器是不是由Spring進行分析。在這種情況下,身份驗證對象是AnonymousAuthenticationToken的實例。

    第二個攔截器是由春分析,用戶被重定向到登錄在spring-security-context.xml

    /* This is a example for to obtain the rol name for example for generate automatic menu */ 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    String namePrincipalRol = null; 
    if (auth instanceof AnonymousAuthenticationToken) { 
        namePrincipalRol = "ROLE_ANONYMOUS"; 
    } else { 
        namePrincipalRol = auth.getAuthorities().iterator().next().getAuthority(); 
    } 
    
  3. 問得好申報頁面,我不知道但我想我記得讀,它必須是POST,嘗試一下會很有趣。我用H:outputLink的

親切的問候。

+0

非常感謝@Rafael你的答案。我忘了這個問題,因爲很久以前我問過它。我在自己的關於框架和測試的閱讀中解決了這個問題。最後在問題(3)我也使用h:outputLink(呈現一個HTML鏈接與HREF),這是一個GET請求,而不是一個職位。謝謝。 – choquero70

+0

不客氣,謝謝你的信息。雖然問題很老,但答案在未來可能會有所幫助。 –

相關問題