[RESOLVIDO] Forçar o usuário a trocar a senha no primeiro login
12 respostas
J
julynhaprado
Olá galera,
Então, eu gostaria de saber como forçar o usuário a trocar a senha na primeira vez que for acessar o sistema.
Eu uso Spring Security 3.0 e Jsf 3.0.
O usuário vai logar primeiramente com uma senha padrão do sistema, e em seguida será mostrada uma página onde ele deve digitar uma nova senha e confirmar essa nova senha.
A partir daí ele usará essa nova senha para logar no sistema.
Também preciso de uma outra funcionalidade: visualizar uma lista de usuarios do sistema, e poder ver quem está online e offline no mesmo.
Alguém tem exemplos pra fazer isso?
:roll:
Já procurei bastante na internet, mas não achei nada concreto. É a primeira vez que tento fazer algo do tipo, e não tenho muito conhecimento com Spring.
vc quer ajuda com logica ou com implementacao, pois se for implementacao fica mais faci especificar sua duvida…
se for por logica dou uma sugestao…
ao fazer o login, se a senha estiver com a senha padrao do sistema, redirecionar para a pagina de troca de senha. Com isso, se o usuario trocar a senha para a senha padrao, ele vai forcar a trocar a senha novamente
A
alissonvla
JSF 3.0, nem sabia q ja tinha saido essa versão…rsrs
1 - vc vai ter que colocar na sua tabela de usuario, um flag do tipo boolean, que quando é feito o cadastro desse usuario vc setaria esse atributo para true e na hora de que ele efetuar o login, vc verifica se é true, se sim, vc encaminha ele para a pagina de troca de senha.
2 - para vc saber que está online ou nao, vc vai ter que criar um Map e adiciona-lo no contexto da aplicação e toda fez que o usuario efetuar o login, vc vai adiciona-lo nesse map e quando ele sair vc remove.
espero ter te ajudado.
t+
J
julynhaprado
HUAHAUHAU, opaa é JSF 2.0, o primefaces que é 3.0 HSUAHSUHASUH. Confundi, desculpa.:oops:
Obrigada pela ajuda de vocês. Já tive algumas idéias agora que responderam.
J
julynhaprado
Bom dia,
Eu não tenho idéia de como fazer um map no contexto da aplicação pra verificar se o usuário está online ou offline.
Alguém pode me ajudar?
J
jonatex
Utiliza Spring Security 3.1.
É muito mais facil descobri qual usuário está logado, além de ser um framework muito utilizado em aplicações web!
A
alissonvla
olha,
faz o seguinte, crie uma classe para ser listener de contexto da sua aplicação e e crie um hashmap e set ele no contexto, como eu fiz aqui
Eu criei essa classe AplicacaoListener. E eu tenho esse ContextoBean :
@ManagedBean(name="contextoBean")@SessionScopedpublicclassContextoBean{privateUsuariousuarioLogado=null;/** * Retorna usuário logado */publicUsuariogetUsuarioLogado(){FacesContextcontext=FacesContext.getCurrentInstance();ExternalContextexternal=context.getExternalContext();Stringnome=external.getRemoteUser();if(this.usuarioLogado==null||!nome.equals(this.usuarioLogado.getNome())){if(nome!=null){UsuarioRNusuarioRN=newUsuarioRN();this.usuarioLogado=usuarioRN.buscarPorLogin(nome);}}returnusuarioLogado;}/** * Define o usuário logado * * @param usuario * Usuário que logou no sistema */publicvoidsetUsuarioLogado(Usuariousuario){this.usuarioLogado=usuario;}
Nele que eu pego o hashmap que está no AplicacaoListener?
Estou confusa :roll:
A
alissonvla
vc tem que fazer mais ou menos isso
@ManagedBean(name="contextoBean")@SessionScopedpublicclassContextoBean{privateUsuariousuarioLogado=null;//vc tem q fazer get e setprivateStringusuario;priavteStringsenha;/** * Retorna usuário logado */publicUsuariogetUsuarioLogado(){UsuarioRNusuarioRN=newUsuarioRN();this.usuarioLogado=usuarioRN.buscarPorLogin(usuario,senha);if(usuarioLogado!=null){FacesContextcontext=FacesContext.getCurrentInstance();HttpServletRequestrequest=(HttpServletRequest)context.getExternalContext().getRequest();HashMap<Long,Usuario>usuariosLogados=(HashMap<Long,Usuario>)request.getServletContext().getAttribute("usuariosLogados");usuariosLogados.put(usuarioLogado.getId(),usuarioLogado);}/*if (this.usuarioLogado == null || !nome.equals(this.usuarioLogado.getNome())) { if (nome != null) { UsuarioRN usuarioRN = new UsuarioRN(); this.usuarioLogado = usuarioRN.buscarPorLogin(nome); } }*/returnusuarioLogado;}/** * Define o usuário logado * * @param usuario * Usuário que logou no sistema */publicvoidsetUsuarioLogado(Usuariousuario){this.usuarioLogado=usuario;}
t+
A
andredecotia
:D
alissonvla:
JSF 3.0, nem sabia q ja tinha saido essa versão…rsrs