0

ユーザー ログインとログイン フィルターを管理するためのセッション スコープ Bean がありますが、別の Bean 内のユーザー オブジェクトを取得して、ログインしているユーザーに基づいて特定のデータを表示する方法がわかりません。

これは私のログイン Bean です。

 @ManagedBean(name="user")
        @SessionScoped
        public class LoginBean {

            private String username;
            private String password;
            private UsuariosEntity current;

         public LoginBean(){}
        @EJB
        UsuariosDAO userService=new UsuariosDAO();



            public String login() {

           try{
           current = userService.buscar(username, password);

           System.out.println(current.getUsuario());
           }catch(Exception e){

           }
                if (current == null) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Unknown login, try again"));
                    return (username = password = null);
                } else {
                    return "/Contenido/vistaProcesos?faces-redirect=true";
                }
            }

            public String logout() {
                System.out.println("logout");
                FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
                return "/Login?faces-redirect=true";
            }

            public boolean isLoggedIn() {
                return current != null;
            }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public UsuariosEntity getCurrent() {
            return current;
        }



    }

ログイン フィルタ:

@WebFilter("/Contenido/*")
public class FiltroLogin implements Filter {

    @Override
    public void init(FilterConfig config) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest req = (HttpServletRequest) request;
        LoginBean user = (LoginBean) req.getSession().getAttribute("user");

        if (user != null && user.isLoggedIn()) {
            // User is logged in, so just continue request.
            chain.doFilter(request, response);
        } else {
            // User is not logged in, so redirect to index.
            HttpServletResponse res = (HttpServletResponse) response;
            res.sendRedirect(req.getContextPath() + "/Login.jsf");
        }
    }

    @Override
    public void destroy() {

    }


}

これが私がやりたいことです:

@ManagedBean(name = "procesos")
@ViewScoped
public class ProcesosBean implements Serializable {
    private List<VistaProcesosEntity> procesos;

    @PostConstruct
    public void init(){

          //i want to fill procesos List with data, depending of the user who is logged on.

       procesos=new ArrayList<VistaProcesosEntity>();

      /* LoginBean user; // i dont know from where should i get the user object.. 

       if (user.getCurrent().getTipo()=="Planta") {
        procesos= Procesos.getALL();
        }else if(user.getCurrent().getTipo()=="Exportadora"){
            procesos=Procesos.getALLbyExportadora(user.getCurrent().getUsuario());
        }  else if (user.getCurrent().getTipo()=="Productor"){
            procesos=Procesos.getALLbyProductor(user.getCurrent().getUsuario());
        } else{
           procesos= Procesos.getALL();
       }   */
    }

    public List<VistaProcesosEntity> getProcesos() {
        return procesos;
    }
4

1 に答える 1