Verificacao usuario logado no vraptor 3

3 respostas
D

coloquei a intercepts para verificar sempre se o usuario esta logado antes de entrar em cada tela do sistema …como esta o codigo abaixo …

so que esta dando erro Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

alguem poderia me ajudar se o redirecionamento esta sendo feito corretamente???

@Intercepts
public class SegurancaLogon implements Interceptor{

private final UsuarioLogado usuarioLogado;
private final HttpServletRequest req;
private final Result result;

public SegurancaLogon(UsuarioLogado usuarioLogado, HttpServletRequest req, Result result) {
	this.usuarioLogado = usuarioLogado;
	this.req = req;
	this.result = result;
	
}

public boolean accepts(ResourceMethod method) {
	return true;
}

public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException {
	System.out.println("Interceptando " + req.getRequestURI());
	
	if (usuarioLogado.isLogado()){
		stack.next(method, resourceInstance); // continua a execução
	}else{
		result.redirectTo(SegurancaController.class).formulario();
	}

}

}

3 Respostas

G

Você deve ignorar a interceptação quando o usuário está autenticado e também quando o resource não for o formulário de login.

public boolean accepts(ResourceMethod method) { return usuarioLogado.isLogado() && method.getMethod().getDeclaringClass().equals(SegurancaController.class); }

public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException { result.redirectTo(SegurancaController.class).formulario(); }

Ou ao invés disso você possa usar JAAS ao invés de reinventar a roda :wink:

D

entendido Garcia muito obrigado pela dica …

G

[quote=diogossh]entendido Garcia muito obrigado pela dica … [/quote

My bad… atualizei o código, já que ao invés de chamar o stack.next você deve chamar seu método de redirect :slight_smile:

Criado 24 de janeiro de 2012
Ultima resposta 24 de jan. de 2012
Respostas 3
Participantes 2