Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF SessionScoped只允许从一个帐户连接到一个网页_Jsf_Session - Fatal编程技术网

JSF SessionScoped只允许从一个帐户连接到一个网页

JSF SessionScoped只允许从一个帐户连接到一个网页,jsf,session,Jsf,Session,我正在开发一个JSF应用程序,其中3种用户(1、2、3)可以使用id登录,并且根据他们是哪种用户登录不同的3个菜单(Menuuser1、Menuuser2、Menuuser2)。每次用户登录时,我都将其id存储在会话范围属性的attibute中。 我希望,如果类型1的用户登录并在浏览器中打开另一个选项卡,他将被重定向到menuuser1,并且不能与类型2的用户从同一台计算机登录。 我怎么能这么做 您可以在过滤器中执行身份验证,您可以检查过滤器类中用户的角色,如果给定角色是user1,它将把请求转

我正在开发一个JSF应用程序,其中3种用户(1、2、3)可以使用id登录,并且根据他们是哪种用户登录不同的3个菜单(Menuuser1、Menuuser2、Menuuser2)。每次用户登录时,我都将其id存储在会话范围属性的attibute中。 我希望,如果类型1的用户登录并在浏览器中打开另一个选项卡,他将被重定向到menuuser1,并且不能与类型2的用户从同一台计算机登录。
我怎么能这么做

您可以在
过滤器中执行身份验证,您可以检查过滤器类中用户的角色,如果给定角色是user1,它将把请求转发给Menuuser1,如果是user2,则转发给Menuuser2,依此类推


例子
对于
“如果具有rol1的用户从其计算机登录,则当他作为具有rol1的用户登录时,他将无法从与具有rol2的用户相同的计算机登录”
这是由sessionScope自动完成的

您的意思是,对于每个具有角色的用户,都会受到资源列表(页面)的影响吗或者当用户1登录时,他应该被重定向到包含菜单1的页面?首先,我想对我的英语说声抱歉。我要树立一个榜样。有3种不同的角色1、2、3。如果具有rol1的用户从其计算机登录,则当他作为具有rol1的用户登录时,他将无法从与具有rol2的用户相同的计算机登录。只有当他注销时,他才有机会使用其他角色登录。它不会记录来自同一主机的2个或更多用户。我在托管bean中使用的范围是SessionScope。
public class ControlRole implements Filter{  

public void init(FilterConfig arg0) throws ServletException {}  
  
public void doFilter(ServletRequest req, ServletResponse resp,  
    FilterChain chain) throws IOException, ServletException {  
      
HttpSession session = request.getSession(false);
User user = (session != null) ? session.getAttribute("user") : null;     

if(user.getRole().getName().equals("user1")){  
chain.doFilter(req, resp);//sends request to next resource  
}  
else if(user.getRole().getName().equals("user2")){
// ......
}

else{
      oresponse.sendRedirect(request.getContextPath() + "/login");
}