Passar login e senha para outra página jsp[Resolvido]

Bom dia,

Tenho uma dúvida sobre acesso de usuário, fiz a validação do usuário e senha com o banco postgre perfeitamente, agora queria fazer o logout de usuário, portanto eu tenho q passar o login e a senha pra outras páginas jsp de forma q n perca essa informação para q consiga fazer o logout…

Se alguém souber de uma forma mas fácil de fazer o logout do usuário pois n estou conseguindo fazer o logout

Para que precisa da senha para realizar logout?
Mas, enfim.
Coloque as informações em um dos escopos (Contexto, aplicação, sessão ou requisição) e passe para frente.
Por exemplo, na sessão

HttpSession sessao = request.getSession();
sessao.addAttribute('usuario", user);
sessao.addAttibute("senha", psw);
response.sendRedirect("outrapag.jsp");

E na jsp, você pode usar EL

${usuario}
${senha}

Mas, como te disse, não sei por que vai precisar do usuário e senha, uma vez logado, ele não precisa confirmar quem é para deslogar. Pelo que entendi, vai ir até o banco para fazer isso, sendo que se está usando sessão, basta invalidar a mesma

[quote=system00]Bom dia,

Tenho uma dúvida sobre acesso de usuário, fiz a validação do usuário e senha com o banco postgre perfeitamente, agora queria fazer o logout de usuário, portanto eu tenho q passar o login e a senha pra outras páginas jsp de forma q n perca essa informação para q consiga fazer o logout…

Se alguém souber de uma forma mas fácil de fazer o logout do usuário pois n estou conseguindo fazer o logout[/quote]

Procure postar dúvidas como esta no local correto do fórum, como no Desenvolvimento Web. Dessa forma, é bem possível a resposta seja mais “precisa” e rápida.

Sobre sua dúvida, veja a interface HttpRequest. Nela tem três métodos essenciais para o seu caso, sendo eles:

O método getUserPrincipal() vai lhe retornar um objeto indicando o usuário logado, os outros dois métodos dispensa comentários, correto ? Portanto, após validar o login via banco de dados, basta realizar o login no request e ele ficará disponível até você realizar o logout :slight_smile:

Se estiver usando um servidor de aplicação, pense na possibilidade de deixar isso a cargo dele.
Abraços.

[quote=nel][quote=system00]Bom dia,

Tenho uma dúvida sobre acesso de usuário, fiz a validação do usuário e senha com o banco postgre perfeitamente, agora queria fazer o logout de usuário, portanto eu tenho q passar o login e a senha pra outras páginas jsp de forma q n perca essa informação para q consiga fazer o logout…

Se alguém souber de uma forma mas fácil de fazer o logout do usuário pois n estou conseguindo fazer o logout[/quote]

Procure postar dúvidas como esta no local correto do fórum, como no Desenvolvimento Web. Dessa forma, é bem possível a resposta seja mais “precisa” e rápida.

Sobre sua dúvida, veja a interface HttpRequest. Nela tem três métodos essenciais para o seu caso, sendo eles:

O método getUserPrincipal() vai lhe retornar um objeto indicando o usuário logado, os outros dois métodos dispensa comentários, correto ? Portanto, após validar o login via banco de dados, basta realizar o login no request e ele ficará disponível até você realizar o logout :slight_smile:

Se estiver usando um servidor de aplicação, pense na possibilidade de deixar isso a cargo dele.
Abraços.[/quote]
mesmo com response.sendRedirect(“algumapag.jsp”);???

Eu só esqueci de perguntar se ele usa um método de login validado pelo container web. Senão usa, ele realmente deve seguir a sua orientação, caso contrário, pode usar o que eu havia dito.

Entendi, vendo por esse lado não é necessario a senha, fiz isso porque quando o usuário loga inseri na tabela para dizer que esta logado, para q n possa fazer o login novamente depois q fizer o logout poderá fazer novamente o login pois irá excluir essa informação na tabela.

ex: tenho 2 usuário se o mesmo logarem no site cada um com suas credenciais qnd cria a nova seção o próprio metodo ja controla isso?

pode ser q só faz o logout do ultimo usuário a conectar?

[quote=system00]Entendi, vendo por esse lado não é necessario a senha, fiz isso porque quando o usuário loga inseri na tabela para dizer que esta logado, para q n possa fazer o login novamente depois q fizer o logout poderá fazer novamente o login pois irá excluir essa informação na tabela.

ex: tenho 2 usuário se o mesmo logarem no site cada um com suas credenciais qnd cria a nova seção o próprio metodo ja controla isso?

pode ser q só faz o logout do ultimo usuário a conectar?[/quote]

A cada login realizado uma nova sessão é criada. O tipo de controle deve ser se o usuário que está tentando realizar o login já estiver logado. Particularmente, vejo duas abordagens ruins aqui:

1 - Porque adicionar e remover informação de se o usuário está ou não logado ? A informação no banco de dados referente a isso deve ser exclusivamente de login e senha, nada além. O controle para verificar se está ou não logado deve ser feito pelo lado servidor, pela aplicação, sem que tenho de executar nada em banco.

2 - Você está tentando implementar um controle de sessão envolvendo login. Isso é facilmente feito por containers web e principalmente, servidores de aplicação. O que você está usando ? Tomcat ? Glassfish ? JBoss ? Pense em deixar esse tipo de administração a cargo do teu container.

tomcat, de que forma é possivel fazer isso?

Pode usar JAAS. Segue três links:

OWASP: https://www.owasp.org/index.php/JAAS_Tomcat_Login_Module

Java Security: http://pt.scribd.com/doc/7571690/Java-Security-Como-Usar-JAAS-Com-Tomcat-6 (simples de entender)

Apache Tomcat 7 doc: http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html

É só procurar por autenticação, JAAS para a versão do seu Tomcat, tem muitos artigos que explicam passo a passo isso.
Procure manter seu Tomcat atualizado, no minimo, na versão 6. Há correções de bugs e outras implementações, basta ler o release notes.

uso tomcat 7 bom irei dar uma pesquisada qualquer coisa post novas dúvidas

nel, procurei sobre JAAS achei vários artigos tentei implementar os exemplos para entender como funciona e não tive sucesso. Tem algo que possa me ajudar?

Não obteve sucesso porque ? Está gerando erros ? Simplesmente não loga ? Qual a atual situação ?

depois q clico em login gera um erro como se n encontra-se a página

HTTP Status 404 - /j_security_check

[quote=system00]depois q clico em login gera um erro como se n encontra-se a página

HTTP Status 404 - /j_security_check

[/quote]

Como está a configuração do seu web.xml ? O que mais gera no log ? :slight_smile:
Poste ambos. E tenha certeza que seguiu passo a passo o tutorial que te passei, criou corretamente as páginas, configurações e etc.

Web.xml


<?xml version="1.0" encoding="utf-8" ?> 
- <web-app 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-app_3_0.xsd" id="WebApp_ID" version="3.0" metadata-complete="true">
  <display-name>AppWebTestaJAAS</display-name> 
- <welcome-file-list>
  <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list>
- <login-config>
  <auth-method>FORM</auth-method> 
  <realm-name>default</realm-name> 
- <form-login-config>
  <form-login-page>/login.jsp</form-login-page> 
  <form-error-page>/erroLogin.jsp</form-error-page> 
  </form-login-config>
  </login-config>
- <security-constraint>
  <display-name>Política de segurança do sistema</display-name> 
- <web-resource-collection>
  <web-resource-name>Protege todo o site</web-resource-name> 
  <url-pattern>/*</url-pattern> 
  </web-resource-collection>
- <auth-constraint>
  <role-name>AUTENTICADO</role-name> 
  </auth-constraint>
  </security-constraint>
- <security-role>
  <description>Papel requerido para acessar quaisquer recursos do aplicativo</description> 
  <role-name>AUTENTICADO</role-name> 
  </security-role>
- <error-page>
  <error-code>403</error-code> 
  <location>/erro403.jsp</location> 
  </error-page>
  </web-app>

log

[list]
27/04/2012 17:04:21 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.22.
27/04/2012 17:04:21 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], random [true].
27/04/2012 17:04:22 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-apr-8080”]
27/04/2012 17:04:22 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“ajp-apr-8009”]
27/04/2012 17:04:22 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 841 ms
27/04/2012 17:04:22 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
27/04/2012 17:04:22 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
27/04/2012 17:04:22 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor D:\tomcat7\conf\Catalina\localhost\gptfnrj.xml
27/04/2012 17:04:23 org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
27/04/2012 17:04:23 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing Root WebApplicationContext: startup date [Fri Apr 27 17:04:23 GMT 2012]; root of context hierarchy
27/04/2012 17:04:23 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
27/04/2012 17:04:24 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@112da40: defining beans []; root of factory hierarchy
27/04/2012 17:04:24 org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 406 ms
27/04/2012 17:04:24 org.springframework.web.servlet.FrameworkServlet initServletBean
INFO: FrameworkServlet ‘dispatcher’: initialization started
27/04/2012 17:04:24 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing WebApplicationContext for namespace ‘dispatcher-servlet’: startup date [Fri Apr 27 17:04:24 GMT 2012]; parent: Root WebApplicationContext
27/04/2012 17:04:24 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
27/04/2012 17:04:24 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@df83e5: defining beans [org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping#0,urlMapping,viewResolver,indexController]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@112da40
27/04/2012 17:04:24 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/index.htm] onto handler ‘indexController’
27/04/2012 17:04:24 org.springframework.web.servlet.FrameworkServlet initServletBean
INFO: FrameworkServlet ‘dispatcher’: initialization completed in 297 ms
27/04/2012 17:04:24 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\tomcat7\webapps\docs
27/04/2012 17:04:24 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\tomcat7\webapps\manager
27/04/2012 17:04:24 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\tomcat7\webapps\ROOT
27/04/2012 17:04:24 org.apache.catalina.startup.SetContextPropertiesRule begin
AVISO: [SetContextPropertiesRule]{Context} Setting property ‘auth’ to ‘Container’ did not find a matching property.
27/04/2012 17:04:24 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-apr-8080”]
27/04/2012 17:04:24 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-apr-8009”]
27/04/2012 17:04:24 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2619 ms

[/list]

Não houve erro no startup do seu container. Todas as páginas JSP referências existem ? Elas foram adicionados ao contexto, ou seja, estão inclusa no seu WAR ?
Qual(is) outro(s) XML(s) tu modificou ?

Abraços.

como assim inclusa no seu war??

eu acesso ela atraves do http://localhost:8080/erroLogin.jsp

alterei + 3 arquivos

criei uma pasta meta-inf e o arquivo meta-inf.xml contendo:

  <?xml version="1.0" encoding="utf-8" ?> 
- <Context auth="Container">
  <Realm className="org.apache.catalina.realm.JAASRealm" appName="ModuloLoginJAAS" userClassNames="br.pro.passos.security.principal.UsuariolmplPrincipal" roleClassNames="br.pro.passos.security.principal.PapellmplPrincipal" /> 
  </Context>

criei o jaas.config conforme o tutorial

ModuloLoginJAAS {
br.pro.passos.security.LoginModuleJAASlmpl required;
};

adicionei uma linha no catalina.bat antes do comentario Execute The Requested Command conforme o tutorial

set JAVA_OPTS=%JAVA_OPTS% -Djava.security.auth.login.config="%CATALINA_BASE%\conf\jaas.config"

criei um LoginModuleJAAS.jar com 3 classes conforme o tutorial

e mas nd

Ué, se nenhum WAR seu tiver as páginas JSP, como ele vai encontrar a página de login, de erro e etc, para realizar o redirect ?

o que seria esse war pois nunca ouvi falar disso

Ah colega, então teus conceitos estão muito básicos, pois se tu está desenvolvendo um sistema WEB e não sabe o que é um WAR, é complicado.
Minha recomendação, falando numa boa, leia um bom tutorial sobre JEE, desenvolvimento com JSP e Servlet, entenda o conceito. Há muitos que ensina passo a passo, faça página bem simples, com login e deu. Depois disso, procure entender sobre o JAAS.

O WAR nada mais é que um JAR direcionado para WEB, basicamente. Contém XML´s de configurações, JSP, CSS, JS e afins, dependendo de sua necessidade.
Faça com calma, estude, pesquisa, melhore os conceitos e tudo será mais claro á você.

aBRAÇOS.