Lo usamos para controlar el acceso de usuarios al sistema.
Pasos:
Creamos el paquete controller primero.
Crear la clase LoginController.java
En este proyecto el usuario se encuentra en una tabla en MySQL llamada usuarios, que se encuentra en el proyecto ejbpilar.
Inyectamos UsuariosFacade, creamos un objeto de la clase Usuarios, y creamos dos métodos doLogin(), logout().
Método doLogin()
Se le asignaran los valores de username y password y se buscara en el facade, para determinar si existe. Como esta definido de Session, mantendrá esta valor mientras el usuario mantenga su sesión activa.
Método logout()
Se utiliza para cerrar la sesión del usuario y liberar todos los recursos.
Debe colocar el nombre del proyecto en la variable url
Copy String url = "/tallerjsd/faces/index.xhtml?faces-redirect=true";
El atributo loogedIn se usa para controlar si el usuario esta logeado o no en el sistema
Copy private Boolean loggedIn = false;
Codigo completo
Copy package com.javscaz.tallerjsd.controller;
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.ejbtallerjsd.entity.Vehiculos;
import com.javscaz.pilarjsd.ejb.UsuarioFacade;
import com.javscaz.pilarjsd.entity.Ordentrabajo;
import com.javscaz.pilarjsd.entity.Usuario;
import com.javscaz.tallerjsd.util.ResourcesFiles;
import java.io.Serializable;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
/**
*
* @author
*
*
*/
@Named
@SessionScoped
public class LoginController implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger LOG = Logger.getLogger(LoginController.class.getName());
@Inject
private UsuarioFacade usuarioFacade;
private Usuario usuario = new Usuario();
private String username;
private String password;
private Boolean loggedIn = false;
private String foto;
@Inject
ResourcesFiles rf;
private String id;
private String key;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
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 Boolean getLoggedIn() {
return loggedIn;
}
public void setLoggedIn(Boolean loggedIn) {
this.loggedIn = loggedIn;
}
@PostConstruct
public void init() {
loggedIn = false;
}
public String irLogin() {
return "/faces/login";
}
public String doLogin() {
try {
usuario = new Usuario();
if (username == null || password == null) {
JsfUtil.warningMessage(rf.getMensaje("login.usernamenotvalid"));
return null;
}
usuario.setIdusuario(username);
Usuario u = usuarioFacade.find(usuario.getIdusuario());
if (u == null) {
JsfUtil.warningMessage(rf.getMensaje("login.usernamenotvalid"));
return null;
}
if (!u.getPassword().equals(password)) {
JsfUtil.sSuccessMessage(rf.getMensaje("login.passwordnotvalid"));
return "";
}
loggedIn = true;
foto = "img/me.jpg";
usuario = u;
JsfUtil.successMessage(rf.getMensaje("login.welcome") + " " + usuario.getCedula().getNombre());
return "/faces/index.xhtml?faces-redirect=true";
} catch (Exception e) {
JsfUtil.errorMessage("doLogin() " + e.getLocalizedMessage());
}
return "/faces/index.xhtml?faces-redirect=true";
}
public String doLogout() {
loggedIn = false;
try {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
if (session != null) {
session.invalidate();
}
String url = "/tallerjsd/faces/index.xhtml?faces-redirect=true";
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
ec.redirect(url);
return "/faces/login.xhtml?faces-redirect=true";
} catch (Exception e) {
LOG.warning("doLogout()" + e.getLocalizedMessage());
}
return "/faces/login.xhtml?faces-redirect=true";
}
}