相关疑难解决方法(0)

如何使用j_security_check获取连接用户的数量及其角色?

我通过托管bean以这种方式获取连接用户的用户名(使用j_security_check):

......
    username =   FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal().getName();
Run Code Online (Sandbox Code Playgroud)

然后以这种方式在jsf页面中显示它:#{userBean.username} 但我认为无法获得连接用户数量并获得他们的角色.换句话说,除了用户名,用户角色和连接用户数之外,我还要显示. 我怎样才能做到这一点!?在此先感谢您的帮助!

编辑:我现在可以使用托管bean中的namedquery获取连接用户的角色:

public Users getUserRole(){
      try {
            Users auser = (Users)
            em.createNamedQuery("Users.findByUsername").
                    setParameter("username", getRemoteUser()).getSingleResult();
            return auser; 
        } catch (NoResultException nre) {
            JsfUtil.addErrorMessage(nre, "getUserRole Error");
            return null;
        }

    }
Run Code Online (Sandbox Code Playgroud)

并在xhtml页面中:

<h:outputLabel for="rolefacet" value="Role: "/>
  <h:outputFormat id="rolefacet" value="#{UserBean.userRole.ugroup}" /> 
Run Code Online (Sandbox Code Playgroud)

而ugroup是Users实体类中的角色名称.


编辑:一个仍然不适合我的解决方案是在我的web.xml中添加一个HttpSessionListener:

package beans;

/**
 *
 * @author med81
 */

import java.io.Serializable;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;

import javax.faces.context.FacesContext;


public class SessionCounter implements …
Run Code Online (Sandbox Code Playgroud)

jsf j-security-check userprincipal java-ee-5

9
推荐指数
2
解决办法
8252
查看次数

标签 统计

j-security-check ×1

java-ee-5 ×1

jsf ×1

userprincipal ×1