Olá,
Estou desenvolvendo uma aplicação para Web com JSP. Nessa aplicação exitem três tipos de usuário: Cliente, Administrador-Gerente e Adminsitrador-Analista.
Para representá-los, fiz três classes Java com getters e setters: User,java, Client,java e Administrador.java, sendo que as duas últimas estendem a primeira.
Dentro de User,java, tenho uma variável que diferencia o usuário entre Cliente e Administrador.
Dentro de Administrator.java, tenho uma variável que diferencia o admin entre Gerente e Analista.
Cada um desses tipos de usuário tem acesso a determinadas páginas, por exemplo:
Cliente: clientHome.jsp
Admisistrador-Gerente: managerHome.jsp, newProject.jsp
Admisistrador-Analista: analystHome.jsp
Andei pesquisando no Google e aqui no GUJ e vi que uma boa opção para se fazer a autenticação das sessões dos usuários ao se requisitar uma determinada página é usando filtros.
No entanto, tenho algumas dúvidas:
- No checkLogin.jsp, depois que eu verifiquei o usuário e a senha de acordo com o banco de dados, devo criar a sessão e redirecioná-lo para o local certo, ok? Estou fazendo o seguinte switch:
[code] // redirect user to a certain page depending on his type
switch (dbUser.getUserType()) {
case User.Type.ADMIN:
Administrator dbAdm = new Administrator();
dbAdm.setStringID(user);
dbAdm = (Administrator) hibernate.load(dbAdm);
if (dbAdm.getLevel() == Administrator.Level.MANAGER) {
session.setAttribute("user", dbAdm);
session.setAttribute("type", "manager");
response.sendRedirect("/managerHome.jsp");
} else if (dbAdm.getLevel() == Administrator.Level.ANALYST) {
session.setAttribute("user", dbAdm);
session.setAttribute("type", "analyst");
response.sendRedirect("/analystHome.jsp");
}
break;
case User.Type.CLIENT:
Client dbClient = new Client();
dbClient.setStringID(user);
dbClient = (Client) hibernate.load(dbClient);
session.setAttribute("user", dbClient);
session.setAttribute("type", "client");
response.sendRedirect("/clientHome.jsp");
break;
default:
out.println("Error identifying user type.");
}[/code]
Como podem ver, estou passando o objeto todo para a sessão. Isso é necessário? É desse jeito que se faz? Ou posso apenas passar o tipo como uma stirng mesmo? Como vou identificar uma sessão?
- Vi num site: http://www.javafree.org/artigo/855399/ um exemplo parecido com o meu. Nesse caso, o programador faz um arquivo que mapeia cada jsp para as pessoas que têm permissão. Essa é a melhor maneira de se fazer? Não seria mais interessante criar uma pasta para cada tipo de usuário com os jsps dentro e fazer um filtro/filter-mapping para cada pasta/usuário? Há outra alternativa?
Muito obrigada desde já!