Spring Security + VRaptor Usuário Logado ![RESOLVIDO]

11 respostas
juniorsatanas

Pessoal estou usando Spring Security + VRaptor,não estou tendo sucesso em mostrar em uma páginas JSP, o usuário Logado !

Alguém poderia da uma ajuda ?

jr.

11 Respostas

Lucas_Cavalcanti

como vc tá tentando mostrar? qual é o component/bean que vc está usando pra guardar os dados do usuário?

juniorsatanas

Lucas Cavalcanti Boa Tarde !

Vai fazer o que no Carnaval ?

Primeiro obrigado, por sempre ajudar, prometo que seu nome vai estar no sobre "consultor" do SIGI, :-)

Na verdade, não fiz nada ainda, em JSF eu faço assim :

# Authentication authentication = (Authentication) SecurityContextHolder.getContext().getAuthentication();   
           
         if(authentication != null){  
             Object obj = authentication.getPrincipal();  
               
             if (obj instanceof Usuario){  
                 return (Usuario) obj;  
             }         
         }

No Vraptor não tenho ideia como vou fazer isso !

Abraço.
jr.

Lucas_Cavalcanti

é a mesma coisa, mas vc pode colocar isso num interceptor e fazer:

result.include("usuario", usuario)
doravan

Como que tá o sua classe @Component @SessionScoped para manusear os usuários logados?

Guevara

Quando se usa o Spring-Security, o user e senha são mandados pra este framework, cujo mapeamento está na web.xml, então é só chamar na JSP:

<div id="topoadm">
<!-- Inicio da div logout --> 
		<div id="logout">
		<sec:authorize ifNotGranted="ROLE_ANONYMOUS">
		Ol&aacute; <%= request.getUserPrincipal().getName() %>
		<a href="<c:url value="/j_spring_security_logout"/>">Logout</a>
		</sec:authorize> 
		</div> 		
<!-- Fim da div logout  -->	
</div>

Nesse código eu dividi uma div pra parte do usuário estar logado e se não estiver, a outra div é mostrada. É necessário fazer o import na própria JSP:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

Abraço!

Guevara

Por um motivo que desconheço, meus posts não aparecem após o envio, o problema ocorre no FF 3.6.15 e Opera 11.01 , estou verificando se o problema é aqui ou no fórum do GUJ. Além disto, ao acessar a página principal www.guj.com.br é mostrada a página de usuário logado, mesmo não efetuando login,limpando cache nos dois browsers e configurado para não armazenar senhas e histórico.

Guevara

post duplicado

juniorsatanas

Doravan , não fiz ainda !

SEgue:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/security
             http://www.springframework.org/schema/security/spring-security-3.0.xsd"
             &gt;
    &lt;!--
    &lt;http auto-config="true"&gt;
        &lt;form-login login-page="/" authentication-failure-url="/?error=invalido" default-target-url="/admin"/&gt;
        &lt;intercept-url  pattern="/admin/**" access="ROLE_ADMIN" /&gt;
        &lt;intercept-url  pattern="/usuario/**" access="ROLE_USER" /&gt;
    &lt;/http&gt;
    --&gt;
    &lt;http auto-config='true' access-denied-page="/WEB-INF/jsp/index/negado.jsp"&gt;
        &lt;form-login login-page="/" authentication-failure-url="/?error=invalido" default-target-url="/index/inicio" /&gt;
        &lt;!--&lt;intercept-url pattern="/index/index.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/&gt;--&gt;
        &lt;intercept-url pattern="/admin/**" access="ROLE_ADMIN" /&gt;
        &lt;intercept-url pattern="/usuario/**" access="ROLE_USER"/&gt;
        &lt;intercept-url pattern="/acesso/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/amostraDimat/**" access="ROLE_USER"/&gt;
        &lt;intercept-url pattern="/amostraDimee/**" access="ROLE_USER"/&gt;
        &lt;intercept-url pattern="/amostraDitalq/**" access="ROLE_USER"/&gt;
        &lt;intercept-url pattern="/amostraNit/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/bancos/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/cidade/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/clienteFisica/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/clienteJuridica/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/contrato/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/cores/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/divisoes/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/equipamentos/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/especialidade/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/estadoCivil/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/estadoUf/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/formaContrato/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/formaPagamento/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/funcionario/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/index/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/laboratorio/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/localColetaAmostra/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/medidas/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/naturezaMarca/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/processo/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/procuracao/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/ramoAtividade/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/requesitosServicosDimat/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/requesitosServicosDimee/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/requesitosServicosDitalq/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/servicosDimat/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/servicosDimee/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/servicosDitalq/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/solicitacao/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/tipoAmostra/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/usuario/**" access="ROLE_ADMIN"/&gt;
        &lt;intercept-url pattern="/util/**" access="ROLE_ADMIN"/&gt;
        &lt;!--&lt;intercept-url pattern="/usuario/index.jsp" access="ROLE_ADMIN" /&gt;--&gt;
        &lt;session-management&gt;
            &lt;concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/&gt;
        &lt;/session-management&gt;
        &lt;!--&lt;security:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /&gt;--&gt;
        &lt;!--&lt;concurrent-session-control max-sessions="1"/&gt;--&gt;
        &lt;logout logout-url="/logout" logout-success-url="/"/&gt;
    &lt;/http&gt;
    &lt;!--
        &lt;authentication-manager&gt;
                &lt;authentication-provider&gt;
                &lt;password-encoder hash="md5" /&gt;
                &lt;jdbc-user-service data-source-ref="dataSource"
                    users-by-username-query="SELECT email as username,
                    senha as password,
                    'true' as enable
                    FROM nutec.usuario WHERE email = ?"
                    authorities-by-username-query="SELECT u.email as username,
                    r.nome as nutec.authority
                    FROM nutec.usuario u,
                    regra r WHERE u.regra_id = r.id AND email = ?"/&gt;
                &lt;/authentication-provider&gt;
        &lt;/authentication-manager&gt;
        --&gt;
         &lt;!--selec no banco users authorities--&gt;
    &lt;authentication-manager&gt;
        &lt;authentication-provider&gt;
            &lt;!--&lt;password-encoder hash="md5" /&gt;--&gt;
            &lt;jdbc-user-service data-source-ref="dataSource"
                               users-by-username-query="SELECT users.username,users.password,'true' AS enabled FROM financeiro2.users WHERE users.username=?"
                               authorities-by-username-query="SELECT authorities.username,authorities.autority FROM financeiro2.authorities WHERE authorities.username=?"/&gt;
        &lt;/authentication-provider&gt;
    &lt;/authentication-manager&gt;
    &lt;!--selec no banco users authorities   FIM --&gt;
    &lt;beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" &gt;
        &lt;beans:property name="url" value="jdbc:postgresql://localhost:5432/nutec" /&gt;
        &lt;beans:property name="driverClassName" value="org.postgresql.Driver" /&gt;
        &lt;beans:property name="username" value="root" /&gt;
        &lt;beans:property name="password" value="debian23" /&gt;
    &lt;/beans:bean&gt;
&lt;/beans:beans&gt;
package br.com.catequese.security;

import br.com.caelum.vraptor.InterceptionException;
//import br.com.caelum.vraptor.Intercepts;
//import br.com.catequese.controller.*;
//import br.com.catequese.security.UsuarioWeb;
import br.com.caelum.vraptor.Result;

import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.com.catequese.controller.UsuarioController;
public class AutenticacaoInterceptor implements Interceptor {

    private final UsuarioWeb usuario;
    private final Result result;

    public AutenticacaoInterceptor(UsuarioWeb usuario, Result result) {
        this.usuario = usuario;
        this.result = result;
    }

    @Override
   public void intercept(InterceptorStack arg0, ResourceMethod arg1, Object arg2) throws InterceptionException {
        result.redirectTo(UsuarioController.class).loginForm();
    }

    @Override
    public boolean accepts(ResourceMethod arg0) {
        return !usuario.isLogado();// && method.containsAnnotation(Restrito.class);
    }

}
juniorsatanas

o usuário DAO ta asim :

package br.com.catequese.dao;

import br.com.caelum.vraptor.ioc.Component;
import br.com.catequese.to.Usuario;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

@Component
public class UsuarioDao {
    private final Session session;

    public UsuarioDao(Session session) {
        this.session = session;
    }

    public void adiciona(Usuario usuario) {
        Transaction tx = session.beginTransaction();
        this.session.save(usuario);
        tx.commit();
    }
    
    public void excluir(Usuario usuario) throws Exception{
        try{
            Transaction tx = session.beginTransaction();
            session.delete(usuario);
            tx.commit();
        }catch(Exception e){
             throw new Exception("Erro ao excluir Usuário. <br />O mesmo tem referência a outros dados.");
        }
    }

    public List&lt;Usuario&gt; listaTudo(){
        System.out.println("LISTOU");
        return this.session.createCriteria(Usuario.class).addOrder(Order.asc("idusuario")).list();
        
    }
// de id para idusuario
    public Usuario carrega(Integer idusuario) {
        return (Usuario) this.session.load(Usuario.class, idusuario);
    }

    public void atualiza(Usuario usuario) {
        Transaction tx = session.beginTransaction();
        this.session.update(usuario);
        tx.commit();
    }

    public boolean existeUsuario(Usuario usuario) {
        Usuario encontrado = (Usuario) session.createCriteria(Usuario.class)
        .add(Restrictions.eq("login", usuario.getLogin()))
        .uniqueResult();
        return encontrado != null;
    }

    public Usuario carrega(Usuario usuario) {
        return (Usuario) session.createCriteria(Usuario.class)
        .add(Restrictions.eq("login", usuario.getLogin()))
        .add(Restrictions.eq("senha", usuario.getSenha()))
        .uniqueResult();
    }
}
juniorsatanas

TCHEGUEVARA FICOU OTIMO :

[url]https://lh3.googleusercontent.com/_nTzBoYSeT2I/TXe1_tcxtqI/AAAAAAAAEXQ/FcMGuDJWTos/s1280/ok.png[/url]

juniorsatanas

OBRIGADO AO LUCAS / Guevara / DORAVAN

Abraço pessoal !

jr.

Criado 4 de março de 2011
Ultima resposta 9 de mar. de 2011
Respostas 11
Participantes 4