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