проблема с входом в систему JSF 2.0 + обработка области сеанса - PullRequest
0 голосов
/ 22 июня 2011

У меня проблема с обработкой входа в JSF 2.0.Я действительно не знаю, иду ли я в правильном направлении.Я хочу быть конкретным, поэтому я укажу, как работает мое приложение

  1. страница входа в систему с bean-объектом сессионной области.
  2. после правильного входа в систему пользователь перенаправляется на следующую страницу сbean-объект другой сессии
  3. второй bean-компонент получает логин и пароль. Строки из bean-компонента firs для дальнейшего использования с базой данных

Мой вопрос заключается в том, чтобы создать две сессии для пользователя?Если так, как я могу убить первый сеанс.Если это не лучший способ управлять входом в систему, пожалуйста, исправьте меня.Заранее спасибо

вот простой пример

ВХОД ЛОШАДЬ

package main;

import java.io.Serializable;
import java.sql.SQLException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@SessionScoped

@ManagedBean(name="loginBean")

public class loginBean implements Serializable
{
    private String login;
    private String password;

    public loginBean()
    {

    }

    public String getPassword() {
        return password;
    }

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



    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String login() throws ClassNotFoundException, SQLException
    {
        SQL sql = new SQL(); //class connecting do database
        if( sql.login(this.login, this.password) == true )
        {
            return "yes"; 
        }
        else
        {
            return "no";
        }
    }

}

ЛОГИН ВХОДвторой боб)

package main;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@SessionScoped
@ManagedBean(name="panelBean")
public class panelBean implements Serializable{

    private String login;
    private String password;
    FacesContext context = FacesContext.getCurrentInstance();

    public panelBean()
    {
        loginBean Bean = (loginBean) context.getApplication().getVariableResolver().resolveVariable(context, "loginBean");

        this.password = Bean.getPassword();
        this.login = Bean.getLogin();


        Bean.setPassword("");
        Bean.setLogin("");


        ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
        HttpSession session = (HttpSession)ectx.getSession(false);
        session.invalidate();
    }

}

ЛИЦА КОНФИГ

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
    <navigation-rule>
        <from-view-id>/login.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>yes</from-outcome>
            <to-view-id>/panel.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>no</from-outcome>
            <to-view-id>/login.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>

1 Ответ

0 голосов
/ 22 июня 2011

Это не создаст два сеанса, а скорее два bean-объекта области действия, которые живут в одном сеансе.на самом деле это не является причиной его ограничения (всегда желательно сохранять маленькое состояние сеанса).loginBean тогда просто установит состояние panelBean.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...