Przepraszam, macie rację.
Już zamieszczam cały kod , a pod nim pytania :
@ManagedBean
@RequestScoped
public class LoginBean implements Serializable {
private static final long serialVersionUID = 5582641298743595112L;
public static final String REDIRECT_URL = "manager.xhtml";
Logger logger = Logger.getLogger(LoginBean.class.toString());
@ManagedProperty("#{sessionBean}")
public SessionBean sessionBean;
@ManagedProperty(value = "#{studentDatabaseBean}")
public StudentService studentService;
@EJB
StudentDao studentDao;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
private String login;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String password;
public LoginBean() {
}
@PostConstruct
public void init() {
logger.info("LoginBean.init - invoke");
if (sessionBean.isLogged()) {
try {
FacesContext.getCurrentInstance().getExternalContext().redirect(REDIRECT_URL);
} catch (Exception e) {
logger.log(Level.SEVERE, "LoginBean.init - IOException", e);
}
}
}
public String login() {
logger.info(String.format("LoginBean.login - invoke,login));
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
try {
EntityManager em = studentService.getInstanceOfEntityManager();
Student student = (new DataBaseSelectorFactory()).findSensitiveData(getLogin(), em, "login");
if (student == null) {
sessionBean.showError("Błędny login lub hasło.");
return null;
}
if (accountDao.authorize(login, password) == null) {
sessionBean.showError("Błędny login lub hasło.");
return null;
}
request.login(login, password);
logger.info("login, student validated.");
writeSessionData(request, student);
} catch (Exception e) {
sessionBean.showError("Błędny login lub hasło.");
logger.log(Level.SEVERE, "LoginBean.login - DaoException (student not found)", e);
return null;
}
return Navigation.HOMEPAGE;
}
public String logout() {
logger.info("Coś tam, coś tam...");
HttpServletRequest request = (HttpServletRequest)
FacesContext.getCurrentInstance().getExternalContext().getRequest();
sessionBean.logout();
try {
request.logout();
} catch (ServletException e) {
logger.log(Level.SEVERE, "LoginBean.logout - ServletException", e);
return null;
} catch (Exception e) {
logger.log(Level.SEVERE, "LoginBean.logout - error", e);
return null;
}
return Navigation.LOGIN;
}
public void reset(ActionEvent event) {
login = "";
password = "";
}
}
-
Czy metody login, logout , authorize , showError, writeSessionData muszę zdefiniować w klasie/interfejsie SessionBean ?
-
login, logout to metody natywne dla HttpServletRequest , dlaczego zatem pomimo importu odpowiednich pakietów, środowisko IDEA
zaznacza je na czerwono ?
-
W jaki sposób zapisywać dane sesji (do czego) np . do tabeli bazy danych, do kontenera MAP, ....?
...dzięki Wam za zerknięcie.