Usuário logado no Spring Securty?

Pessoal estou usando Spring Security + Vraptor , eu tenho um usuário logado no sistema, gostaria de por o usuário logado na sessão na página :

&lt;c:if test="${userSession.logged}"&gt; [ Bem vindo &lt;strong&gt;${userSession.currentUser.name}&lt;/strong&gt; ] <a /users/${userSession.currentUser.id}" />&quot;&gt;Minha Conta</a> <a /orders" />&quot;&gt;Meus Pedidos</a> <a /users/logout" />&quot;&gt;Logout</a> &lt;/c:if&gt; &lt;c:if test="${empty userSession or not userSession.logged}"&gt; <a /users/register" />&quot;&gt;Cadastrar</a> <a /users/login" />&quot;&gt;Login</a> &lt;/c:if&gt;

alguém sabe como faço isso ?

meu usuarioDao.java

[code]package ce.gov.nutec.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import br.com.caelum.vraptor.ioc.Component;

import ce.gov.nutec.model.Usuario;

@Component
public class UsuarioDao {

private final Session session;

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

@SuppressWarnings("unchecked")
public List&lt;Usuario&gt; lista(String uf){
    System.out.println("listou Usuarios");
	return session.createCriteria(Usuario.class)
			.add(Restrictions.ilike("uf", uf, MatchMode.ANYWHERE))
			.list();
}

@SuppressWarnings("unchecked")
public List&lt;Usuario&gt; listaTudo(){
    System.out.println("listou TUDO");
	return this.session.createCriteria(Usuario.class).list();
}

}

[/code]

usuarioController.java

[code]package ce.gov.nutec.controller;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import br.com.caelum.vraptor.Validator;
import ce.gov.nutec.dao.UsuarioDao;
import ce.gov.nutec.model.Usuario;
import java.util.List;

@Resource
public class UsuarioController {
private final UsuarioDao dao;
private final Result result;
private final Validator validator;

public UsuarioController(UsuarioDao dao,
                           Result result,
                           Validator validator) {
    this.dao = dao;
    this.result = result;
    this.validator = validator;

}
@Path("/usuario")
public void index() {
}
/*
 @Path("/usuario/formulario")
public void formulario() {
}
*/
@Get @Path("/usuario/todos")
public List&lt;Usuario&gt; lista(){
    System.out.println("==========================LISTOU TODOS USUARIOS=======================");
    return dao.listaTudo();
}

}[/code]

usuario.java

[code]package ce.gov.nutec.model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
//@Table(name = “acompanhamento_pd”, catalog = “nutec”, schema = “sigi”)
public class Usuario implements Serializable {

@Id @GeneratedValue
private Long id;
private String nome;
private String senha;

public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getUf() {
	return senha;
}
public void setUf(String uf) {
	this.senha = uf;
}

}
[/code]

getter/setter no UserSession?

Eu aqui coloquei no header da Home:

<sec:authorize ifNotGranted="ROLE_ANONYMOUS">
		Ol&aacute; <%= request.getUserPrincipal().getName() %>
		<a href="<c:url value="/j_spring_security_logout"/>">Logout</a>
		</sec:authorize> 

Só isso…

[code]# <sec:authorize ifNotGranted=“ROLE_ANONYMOUS”>

Olá <%= request.getUserPrincipal().getName() %>

<a /j_spring_security_logout"/>">Logout

</sec:authorize> [/code]

Esse : request.getUserPrincipal().getName() e o Spring Security ! ?

Não, é do http request. Mas têm como pegar pelo Spring Security tb, já vi isso no fórum do Spring Security…

Guevara Boa Tarde !

Teu sistema pega o usuário logado e Seta ele no banco ?
To apanhando para fazer isso, pois meu sistema usa o Spring Security, e todo usuario logado tem que ser setado no banco…

jr

Cara, eu estou com o mesmo problema.

A minha aplicacao deve pegar o username, o password e o session id e gravar na base de dados.

Andei pesquisando por ai, para saber se é possivel pegar o session id pelo spring, mas infelizmente nao vi algo de concreto. Falam de listeners que escutam o httprequest e depois devo pegar o session di de la, mas nao entendi como posso fazer isso.

Quero saber se é possivel instanciar um bean do spring que me devolva o session id, porque preciso pegar em muitos siios e não pretendo instanciar sempre que queria pegar o session id.

Ajudem-me é urgente.

pior dos casos vc pode receber uma HttpSession e dar um getId() nela

Lucas, valei pela dica, mas não quero estar a instanciar o httpsession em todas as paginas *.zul onde eu quero pegar o session Id, eu quero instanciar um bean através do spring e ai eu terei acesso ao session id sempre que eu quiser.

O problema é que eu não percebo como poderei fazer isso com o spring, será que é possivel? Alias eu acho que sim, eu vi uma class WebAuthenticationDetails mas esta classe necessita de um HttpServletRequest isso no construtor, e eu não sei como pegar o HttpServletRequest através de um bean

vc não vai instanciar o HttpSession, vc vai receber como dependência…

vc pode criar um bean/component seu que faz isso e tem um getSessionId

Não há uma maneira mais simples de pegar o session id através do spring?

Acho que eu é que não expliquei bem que quero. É o seguinte:

Pelo que percebi, quando alguém acede a aplicação, é enviado um request para o servidor, e antes de se carregar a aplicação ele vai ler os ficheiros de configuração web.xml e webConten-spring.xml para o meu caso.

Então, ai eu quero pegar o session id através de um bean do spring para que possa ter acesso ao longo de todo o escopo da aplicação.

Desculpe a minha ignorância mas estou meio confuso, comecei com o spring a pouco tempo.

Encontrei esse código que delega os httprequests para o spring

springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy

Apartir daí, tem como eu pegar o session id?

Pode me indicar um site onde possa ler e entender o funcionamento do spring duma vez por todas, se fav favor?

Obrigado.