2014-02-25 121 views
0

我的應用程序已經使用JSF2,primefaces春季 發展我想就上述頁面添加用戶的詳細信息吧春季安全用戶詳細信息

這條將包含字符串Hello用戶, 這條只有當用戶出現登錄

我的問題是,當訪問的應用程序,我再次看到了吧,同時記錄的過程中不執行

有什麼建議?

組欄可見的代碼是:

public String login() { 
     boolean success = authenticationService.login(mail, password); 

     if (success) { 
      signedIn = true; 
      User user = (User) SecurityContextHolder.getContext() 
        .getAuthentication().getPrincipal(); 
      String name = user.getUsername(); // get logged in username 

      System.out.println(">>>>>>>>> login "+name); 

      setName(name); 
      return "facultyRating"; // return to 
            // application 
            // but being 
            // logged now 
     } else { 
      signedIn = false; 
      FacesContext.getCurrentInstance().addMessage(null, 
        new FacesMessage("Login or password incorrect.")); 
      return "/pages/securityLogin.xhtml/loginPage.xhtml"; 
     } 

這種方法在bean的存在,其中JSF2頁面「包含用戶信息欄」從中讀取 感謝

+0

您可以張貼在那裏你將用戶欄的代碼? –

+0

我編輯了這篇文章請看看 – user3351364

回答

0

它已經解決了通過在不同的安全網頁的信息欄「就會出現登陸後」

0

假設登錄方法是一部分的會話作用域管理bean,可以使用signedIn屬性來確定是否使用組件的呈現屬性顯示菜單欄。

類似如下:

<h:form id="menuForm"> 
    <p:menubar rendered="#{authMBean.signedIn}">...</p:menubar> 
</h:form> 

的登錄方法也應該更新在用戶欄放置以便顯示它在登錄成功的形式。

org.primefaces.context.RequestContext.getCurrentInstance().update(":menuForm"); 
+0

我的問題是,當其他用戶訪問應用程序時,這個屬性仍然是正確的,但是我在@postconstruct方法中做到了這一點 signedIn = false; 當另一個用戶訪問與當前用戶的應用程序併發性時,爲什麼不調用此方法 – user3351364

+0

這可能是一個範圍問題。有機會,當其他用戶登錄時,您沒有獲得該類的新實例。從該bean發佈其餘代碼可能是一個好主意。 –