Pegar login do usuário Atual da sessão do Spring security com jsf 2. [RESOLVIDO]

Pessoal Tenho uma aplicação em jsf 2 e Dao com autenticação via Spring security igual a este tutorial : http://jamacedo.com/2011/01/crud-jsf-2-parte-3-seguna-com-spring-security-3/ . só que com DAo , mas assim não tenho muito controle do usuário que logou no sistema, pois ele está no banco de dados usado pelo spring, Como faço pra pegar o nome do usuário atual da sessão que logou no página de login do spring ??? Algúem ???
Desde já Obrigado!

Boa tarde.

Após a autenticação do usuário para pegar o seu username:

((SecurityContext) SecurityContextHolder.getContext()).getAuthentication().getName()

[]'s
t++

Crie um ManagedBean da seguinte forma



import java.io.Serializable;

import java.io.Serializable;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

import com.suporte.model.Usuario;

public class UsuarioController implements Serializable {
	
	private Usuario usuario;
	
	
	public UsuarioController(){
		usuario = new Usuario();
		SecurityContext context = SecurityContextHolder.getContext();
		if(context instanceof SecurityContext)
		{
			Authentication authentication = context.getAuthentication();
			if(authentication instanceof Authentication)
			{
				 usuario.setLogin(((User)authentication.getPrincipal()).getUsername());
			}
		}
		
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	

}

Após isso, basta instanciar um objeto da seguinte forma

UsuarioControler uc = new UsuarioControler();

String usuario = uc.getUsuario().getLogin();

Se der certo ou não posta ai!

Charles fiz da forma que falou e deu o seguinte erro. : /admin/sec/cadnoticia.xhtml @17,63 value="#{noticiaBean.nomesessao}": Property ‘nomesessao’ not found on type br.com.controller.NoticiasBean . o que poderá ser ???

tiagoamx, se possível post o código para avaliarmos melhor mas vc pode criar um controller como o jonatex fez q deve dar certo tb.

tentando adivinhar; teu erro pode ser pq vc criates um método tipo getX() no teu bean NoticiasBean.java:

public String getNomessesao()
{
   return (((SecurityContext) SecurityContextHolder.getContext()).getAuthentication().getName())
}

[]'s
t++

public String getLoginUsuario() {
	UserLogado user = (UserLogado) SecurityContextHolder.getContext()
			.getAuthentication().getPrincipal();
	return user.getUsername().toString();
}

criei a classe User logado extends de User do org.springframework.security.core.userdetails.User, fiz isso porque precisava de mais informaçõe do usuário da sessão como Nome Completo e uma lista dos acessos dele;

Pessol Consegui resolver ! muito fácil da forma que o jonatex explicou … Valew pessoal problema resolvido
Abração.

Precisando estamos ai :D.

Por gentileza, coloca [RESOLVIDO] no título do post.

Abrass!

galera desculpa meio que “desenterrar” o tópico… é que estou um pouco desesperado rsrs… to com um problema e não consigo resolver

eu tenho uma aplicação usando jsf, spring security, etc… tudo funcionando certinho

meu index nao tem validação pra acessar… qualquer um pode acessar…
somente o /usuario/** tem que ser ROLE_USER

no meu /index.xhtml eu tenho 2 painel assim:

painel1- “olá, clique aqui e registre-se ou faça login”
ou
painel2 - “olá alan | minhas informações | sair”

ou seja um se o usuário não estiver logado… e o outro se o usuário estiver logado…

no meu xhtml eu usei o seguinte código:

[code]
<h:panelGroup rendered="???">



<h:graphicImage value="/img/userOff.jpg" width=“40” height=“40” title=“Visitante” alt=“Visitante”/>



Beleza<h:outputText styleClass=“saudacaoNegrito” value=" Visitante?"/>

Faça seu <h:outputLink value="/usuario/meu-cadastro.xhtml">login</h:outputLink> ou <h:outputLink value="/cadastro.xhtml">cadastre-se</h:outputLink>



</h:panelGroup>
                    <h:panelGroup rendered="#{facesContext.externalContext.isUserInRole('ROLE_USER')}">
                        <div id="logado">
                            <div id="fotoUser">
                                <h:graphicImage value="/img/userOn.jpg" width="40" height="40" title="Flechada" alt="Flechada"/>
                            </div>
                            <div class="alinhaTextoUser">
                                <div class="saudacaoUser">
                                    E aí<h:outputText styleClass="saudacaoNegrito" value=" Flechada"/>, beleza?<br/>
                                    <h:outputLink value="#">Meu Espaço</h:outputLink> | <h:outputLink value="#">Favoritos</h:outputLink> | <h:outputLink style="color: #cc6666;" value="#">Sair</h:outputLink>
                                </div>
                            </div>
                        </div>
                    </h:panelGroup>
                </section>[/code]

o painel2 pra mostra as informações do usuário está certo
porém no painel1 onde eu tenho “???” eu nao sei oq por…
ja tentei ! or not empty de quase-tudo e nao vai :frowning: