spring security用户详细信息

时间:2014-02-25 13:11:48

标签: jsf-2 primefaces spring-security

我的应用程序是使用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页面 谢谢

2 个答案:

答案 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)

通过在单独的安全页面中设置信息栏“仅在登录后才会出现”

来解决问题