我的应用程序是使用jsf2,primefaces和spring开发的 我想在页面上方添加用户详细信息栏
此栏将包含String hello User, 仅当用户登录时才会显示此栏
我的问题是当再次访问应用程序时,我在执行日志记录过程时看到了该栏
有什么建议吗?
设置栏的代码可见:
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)
假设login方法是会话作用域托管bean的一部分,您可以使用 signedIn 属性来确定是否使用组件的呈现属性显示菜单栏。
如下所示:
<h:form id="menuForm">
<p:menubar rendered="#{authMBean.signedIn}">...</p:menubar>
</h:form>
登录方法还应该更新放置用户栏的表单,以便在登录成功时显示它。
org.primefaces.context.RequestContext.getCurrentInstance().update(":menuForm");
答案 1 :(得分:0)
通过在单独的安全页面中设置信息栏“仅在登录后才会出现”
来解决问题