Bom Dia, Pessoal
Por favor, onde será que estou pecando nesse aspécto?
[code]@Resource
public class IndexController {
private HttpServletRequest request;
private Result result;
private Usuario usuario;
public IndexController(Result result, Usuario usuario,HttpServletRequest request) {
this.result = result;
this.usuario = usuario;
this.request = request;
}[/code]
AUTENTICAR … E MONTAR A SESSÃO
@Path("/autenticar")
public void autenticar(Usuario usuario) {
usuario = new UsuarioDao().validar(usuario);
this.usuario = usuario;
if (usuario.getId()!=null) {
usuario.setLogado(true);
this.result.redirectTo(this).raiz(); // REDIRECIONA PARA A PÁGINA PRINCIPAL DO SISTEMA
}else{
this.usuario.setMsg(new Msg("Login não autorizado!"));
this.result.redirectTo(this).login(usuario); // VOLTA PARA A PÁGINA DE LOGIN
}
}
[color=red]Aqui, os valores setados na sessão, no método autenticar … somem. … somente aqui … .ele não identifica estes dados no interceptor, depois ele funciona nos demais métodos/páginas e no interceptor[/color]
DETALHE: comentei o @Restrito do método raiz … e … os dados funcionam corretamente até no Interceptor
[code]@Restrito
@Path("/raiz")
public void raiz() {
// montar menus e exibir a tela
}
}
[/code]
PERDOE-ME …receio sempre postar muito código para não cansar quem o lê, porém a pedido do Fabio Brotas … eis ai:
[code]package br.gov.sp.guarulhos.letrando.interceptor;
import br.com.caelum.vraptor.InterceptionException;
import br.com.caelum.vraptor.Intercepts;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.ioc.RequestScoped;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.gov.sp.guarulhos.letrando.controller.IndexController;
import br.gov.sp.guarulhos.letrando.infra.Restrito;
import br.gov.sp.guarulhos.letrando.modelo.Msg;
import br.gov.sp.guarulhos.letrando.session.Usuario;
@Intercepts
@RequestScoped
public class AutorizacaoInterceptor implements Interceptor {
private Result result;
private Usuario usuario;
public AutorizacaoInterceptor(Result result, Usuario usuario){
this.result = result;
this.usuario = usuario;
}
public boolean accepts(ResourceMethod method) {
boolean teste;
System.out.println("this.usuario.getLogado(): "+this.usuario.getLogado());
try{
teste = !this.usuario.getLogado();
}catch (NullPointerException e) {
teste = true;
}
return teste && method.containsAnnotation(Restrito.class);
}
public void intercept(InterceptorStack stack, ResourceMethod method,Object resourceInstance)
throws InterceptionException {
this.result.redirectTo(IndexController.class).msg(new Msg(1, 0, "Erro de Sessao", "Ou voce nao acessou o sistema ou tua sessao expirou. Por gentileza, acesse o sistema pela tela de login."));
}
}[/code]
a Classe Restrito
[code]package br.gov.sp.guarulhos.letrando.infra;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Restrito {
}[/code]