Boa tarde pessoal,
Estou desenvolvendo uma aplicação e me deparei com a seguinte situação:
fiz o login de 2 usuarios em maquinas diferentes e abri a aplicação. O usuario1 acessa uma pagina qualquer, faz uma pesquisa para edição, por exemplo, então o usuario2 em outra máquina e outro login acessa a mesma URL e os dados do usuario1 são exibidos. 1 altera o outro.
Alguém poderia me dá uma ajuda e dizer em que estou errando?
Essa classe grava as informações do usuario logado. Consigo acessa-la e pegar as informarções
[CODE]
@Named
@SessionScoped
public class Seguranca {
public String getNomeUsuario(){
String nome = null;
UsuarioSistema usuarioLogado = getUsuarioLogado();
if (usuarioLogado != null) {
System.out.println("logado");
nome = usuarioLogado.getUsuario().getNome();
}
return nome;
}
public Usuario getRetornausuarioLogado(){
Usuario usuario = new Usuario();
UsuarioSistema usuarioLogado = getUsuarioLogado();
if (usuarioLogado != null) {
System.out.println("Usuario Logado");
usuario = usuarioLogado.getUsuario();
System.out.println("ID "+usuario.getId());
}
return usuario;
}
private UsuarioSistema getUsuarioLogado() {
UsuarioSistema usuario = null;
UsernamePasswordAuthenticationToken auth = (UsernamePasswordAuthenticationToken)
FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
if (auth != null && auth.getPrincipal() != null) {
usuario = (UsuarioSistema) auth.getPrincipal();
}
return usuario;
}
}
/CODE]
Classe authentication-provider
[CODE]
@Component
@Scope(“session”)
public class AppUserDetailsService implements UserDetailsService {
@Autowired
private UsuarioServico usuarioServico;
@Autowired
private Usuario usuario;
@Autowired
Perfil perfil;
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
System.out.println("CHAMANDO aqui ");
UsuarioSistema user = null;
usuario = usuarioServico.findByNome(userName);
if (usuario != null) {
user = new UsuarioSistema(usuario,getPerfis(usuario));
System.out.println("achou usuario...");
ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
HttpSession session= attr.getRequest().getSession(true);
System.out.println("PEGANDO A SESSION "+session.getId());
session.setAttribute("seguranca", new Seguranca());
Seguranca usuarioLogado = (Seguranca) session.getAttribute("seguranca");
}else{
System.out.println("nao achou");
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "Usuário e/ou senha inválidos", null));
}
return user;
}
private Collection<? extends GrantedAuthority> getPerfis(Usuario usuario) {
List<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority(usuario.getPerfil().getNome()));
return authorities;
}
}
[/CODE]
Ao logar “cria” session diferentes para os usuários, mas não consigo fazer o sistema funcionar com mais de 1 usuario logado na mesma página.
Desde já agradeço. Obrigado.