Problema de Lógica

Galera, boa tarde, estou com um pequeno problema de Lógica…

Seguinte…

Tenho um sisteminha em struts, que o usuario loga no sistema, ele redireciona para outra pagina mostrando usuario e senha atraves de session e etc…

Queria diferenciar um usuario de um admin do sistema…

O cara que se logasse como admin redirecionasse para uma outra pagina, diferente de qualquer outro usuario…

Ai tentei fazer com uns findForwards, mas não deu certo…

Na verdade, ele não tá conseguindo pegar o usuario no if, pra fazer a validação…

LoginAction - ANTES

LoginForm login = ((LoginForm) form);
		Usuario usuario = login.getUsuario();

		HttpSession session = request.getSession();
		session.setAttribute("usuario_logado", usuario.getUsuario());
		session.setAttribute("senha_logado", usuario.getSenha());

		if (!new UsuarioDAO().existeUnico(usuario)) {
			return map.findForward("erro_login");
		}

		return map.findForward("ok_login");

Assim é como ele estava antes, ele somente entra no DAO faz uma verificação se existe algum usuario no banco e se tem algum igual, caso tenha ele retorna null e manda pra pagina de erro e embaixo ele me manda para a pagina de ok…

Agora segue o alterado, somente um aidéia, tentei de várias formas…

LoginForm login = ((LoginForm) form);
		Usuario usuario = login.getUsuario();

		HttpSession session = request.getSession();
		session.setAttribute("usuario_logado", usuario.getUsuario());
		session.setAttribute("senha_logado", usuario.getSenha());

		/*if (!new UsuarioDAO().existeUnico(usuario)) {
			return map.findForward("erro_login");
		}*/

		if (session.getAttribute("usuario_logado") == "admin") {
			return map.findForward("admin_login");
		} else {
			return map.findForward("erro_login");
		}

		// return map.findForward("ok_login");

Nessa parte do if, já tentei pegando a propria session, ja tentei também usando tipo…

if (usuario.getUsuario().contains("admin")...

Outras formas mirabolantes ai… mas nenhuma deu certo…

O que posso fazer?

De uma olhada nesta seguinte linha:

 if (session.getAttribute("usuario_logado") == "admin") {   
   return map.findForward("admin_login");   
}

session.getAttribute(“usuario_logado”) nunca sera igual a admin… pois ele retorna um objeto e não uma String e a forma de comparação == esta incorreta…

tente substituir isto:

session.getAttribute("usuario_logado") == "admin"

por isto:

"admin".equals(session.getAttribute("usuario_logado").toString()) 

e veja se funciona… outra coisa não chame DAOs direto da action chame um facade ou um delegate primeiro onde vc possa fazer um controle transacional e de exeçoes… e use Factorys para instancialos e não direto com um new… esta sua arquitetura pode ocasionar problemas futuramente…

De uma lida sobre os padrões Delegate/Facade, DAO e Factoryes podem te ajudar muito na arquitetura de seu projeto…

[quote=luistiagos]De uma olhada nesta seguinte linha:

 if (session.getAttribute("usuario_logado") == "admin") {   
   return map.findForward("admin_login");   
}

session.getAttribute(“usuario_logado”) nunca sera igual a admin… pois ele retorna um objeto e não uma String e a forma de comparação == esta incorreta…

tente substituir isto:

session.getAttribute("usuario_logado") == "admin"

por isto:

"admin".equals(session.getAttribute("usuario_logado").toString()) 

e veja se funciona… outra coisa não chame DAOs direto da action chame um facade ou um delegate primeiro onde vc possa fazer um controle transacional e de exeçoes… e use Factorys para instancialos e não direto com um new… esta sua arquitetura pode ocasionar problemas futuramente…

De uma lida sobre os padrões Delegate/Facade, DAO e Factoryes podem te ajudar muito na arquitetura de seu projeto…
[/quote]

Cara, desse jeito deu certo… muito obrigado…
Não sabia que eu poderia fazer isso, tipo do “admin”.equals

E a respeito do delegate/facade vou dar uma olhada sim e tentar implementar em meu projeto, muito obrigado pela ajuda…

abraços