Bom dia pessoal,
Criei um sistema de login, porém, se o usuário digitar as URLs manualmente, as páginas abrem. Alguém sabe o que eu preciso fazer para resolver esse problema?
Grato,
Alexandre Palmeira
Bom dia pessoal,
Criei um sistema de login, porém, se o usuário digitar as URLs manualmente, as páginas abrem. Alguém sabe o que eu preciso fazer para resolver esse problema?
Grato,
Alexandre Palmeira
filtro
Bom dia pessoal,Criei um sistema de login, porém, se o usuário digitar as URLs manualmente, as páginas abrem. Alguém sabe o que eu preciso fazer para resolver esse problema?
Grato,
Alexandre Palmeira
abraço.
Obrigado pela ajuda pessoal!
Existe alguma forma de criar o filtro de utilizar o JAAS?
Obrigado pela ajuda pessoal!Existe alguma forma de criar o filtro de utilizar o JAAS?
ein ?? :?:
Desculpem, sou leigo nesse assunto!
Alguém pode indicar um tutorial de como criar um filtro no Eclipse, e até mesmo do que é possível fazer com um filtro?
Grato.
que framework vc esta usando?
Primeiramente vc tera que ter uma ActionBase, ou um Interceptor e tera que fazer as validações necessarias para situacao.
Se as paginas abrem mesmo sem estar logado vc pode ter duzias de problemas.
Pode ser problema com a criação/exclusão de cookie, pode ser falha no seu sistema de autenticação, pode ser que vc esteja usando Basic Autentication (nesse caso vc deve fechar o browser - todas as instâncias - e abrir de novo). Enfim sem saber mais fica dificil ajudar.
se vc estiver usando jsf é so usar um phaselistener q resolve o problema …
Olá amigo,
Estou usando o JSF. Como funciona esse phaselistener? você pode indicar algum tutorial?
Grato.
bom … antes de mais nada vc deveria estudar o ciclo de vida do jsf, procura no google tem varios bons artigos, a ibm tem um q eu particularmente acho mto bom.
o phase listener funciona assim … a cada fase do ciclo de vida do jsf ele passa por uma especie de filtro.
public class LoginListener implements PhaseListener{
public void afterPhase(PhaseEvent p) {
//aqui vc implmenta o filtro do usuario
}
public void beforePhase(PhaseEvent arg0) {
}
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}
google ajuda…
Valeu galera!
Eu já tinha procurado no google, mas eu nem sabia desse recurso “phaselistener”, por isso, não encontrei muita coisa!
Mais uma vez, obrigado!
[RESOLVIDO]
google ajuda…
Eu estou tentando implementar o PhaseListener no meu projeto, mas estou tendo problemas com o ciclo da minha aplicação: o phaselistener só me libera o acesso à pagina inicial, após o login. A partir dessa pagina inicial, se eu tento acessar outro link ou acessar o banco, ele me volta à pagina de login.
O que pode ser?
Valeu!
Oi pessoal, estou com o mesmo “problema”…
As páginas abrem se o usuario nao estiver logado, e apenas digitar o pagina na barra d enderço…
Mas estou utilizando servlets e JSP
Esse filtro, funciona da mesma maneira para servlet?
Simples, coloque as páginas JSPs dentro da pasta WEB-INF, elas não estarão disponíveis via URL.
Uhm não deu certo…
É só colocar as telas na pasta web-inf? não preciso fazer mais nada?
Deu erro 
Colocar as páginas dentro do WEB-INF não permite o acesso via URL, assim você só precisa fazer o login e redirecionar para a página certa. O caminho delas tambem muda, passa a ser /WEB-INF/pagina.jsp.
Ah, não sei o q estou fazendo de errado, mas não funcionou…
Fiz como falou, coloquei minhas telas na WEB-INF e só mudei o caminho das paginas…
E não deu… 
Vou utilizar este tópico porque o assunto é semelhante.
Estou usando um exemplo de PhaseListener para autenticação. Está quase funcionando, mas o método seguinte:
String path = extContext.getRequestPathInfo();
está retornando sempre null e assim não está desviando para a página de login. Alguém sabe como corrigir?
Segue o código da PhaseListener:
/**
* <p>This <code>PhaseListener</code> will be take action before
* the <code>Restore View</code> phase is invoked. This allows
* us to check to see if the user is logged in before allowing them
* to request a secure resource. If the user isn't logged in, then
* the listener will move the user to the login page.</p>
* @author rlubke
*/
public class AuthenticationPhaseListener implements PhaseListener {
/**
* <p>The outcome to trigger navigation to the login page.</p>
*/
private static final String USER_LOGIN_OUTCOME = "login";
// ---------------------------------------------- Methods from PhaseListener
/**
* <p>Determines if the user is authenticated. If not, direct the
* user to the login view, otherwise all the user to continue to the
* requested view.</p>
*
* <p>Implementation Note: We do this in the <code>afterPhase</code>
* to make use of the <code>NavigationHandler</code>.</p>
*/
public void afterPhase(PhaseEvent event) {
FacesContext context = event.getFacesContext();
System.out.println("OLA.... estou no PhaseListener");
if (userExists(context)) {
// allow processing of the requested view
return;
} else {
// send the user to the login view
if (requestingSecureView(context)) {
context.responseComplete();
context.getApplication().
getNavigationHandler().handleNavigation(context,
null,
USER_LOGIN_OUTCOME);
}
}
}
/**
* <p>This is a no-op.</p>
*/
public void beforePhase(PhaseEvent event) {
}
/**
* @return <code>PhaseId.RESTORE_VIEW</code>
*/
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
// --------------------------------------------------------- Private Methods
/**
* <p>Determine if the user has been authenticated by checking the session
* for an existing <code>Wuser</code> object.</p>
*
* @param context the <code>FacesContext</code> for the current request
* @return <code>true</code> if the user has been authenticated, otherwise
* <code>false</code>
*/
private boolean userExists(FacesContext context) {
ExternalContext extContext = context.getExternalContext();
return (extContext.getSessionMap().containsKey(PessoaJpaController.USER_SESSION_KEY));
}
/**
* <p>Determines if the requested view is one of the login pages which will
* allow the user to access them without being authenticated.</p>
*
* <p>Note, this implementation most likely will not work if the
* <code>FacesServlet</code> is suffix mapped.</p>
*
* @param context the <code>FacesContext</code> for the current request
* @return <code>true</code> if the requested view is allowed to be accessed
* without being authenticated, otherwise <code>false</code>
*/
private boolean requestingSecureView(FacesContext context) {
ExternalContext extContext = context.getExternalContext();
String path = extContext.getRequestPathInfo();
System.out.println("OLA.... estou no SecureView " + path);
return (!"/pages/main/login.jsf".equals(path) && !"/pages/main/create.jsf".equals(path));
}
}
O problema foi resolvido trocando o “getRequestPathInfo” por “getRequestServletPath”
private boolean requestingSecureView(FacesContext context) {
ExternalContext extContext = context.getExternalContext();
String sp = extContext.getRequestServletPath();
return (!"/pages/main/login.jsf".equals(sp) && !"/pages/main/create.jsf".equals(sp));
}