FJ28 Interceptor não está funcionando!

2 respostas
Jhoseph_Araujo

Olá galera do guj, estou seguindo a apostila fj28 e parei no Interceptor. Está funcionando td perfeitamente na hora de verificar se o usuario está logado e exibir alguns links para ele, só que não está bloqueando o acesso método pela url. Na minha aplicação o usuario só pode adicionar um produto se estiver logado quanto a isso td bem, só que na hora que tento acessar o formulario através da url tbm funciona aí está o erro, deveria redirecionar para o login.
minha classe interceptor está assim:

public class AutorizacaoInterceptor implements Interceptor {

    private final UsuarioWeb usuario;
    private final Result result;

    public AutorizacaoInterceptor(UsuarioWeb usuario, Result result) {
        this.usuario = usuario;
        this.result = result;
    }


    public void intercept(InterceptorStack is, ResourceMethod rm, Object o) throws InterceptionException {
        result.redirectTo(UsuariosController.class).loginForm();
    }

    public boolean accepts(ResourceMethod rm) {
        return !this.usuario.isLogado() && rm.containsAnnotation(Restrito.class);
    }

}

Minha classe anotada está assim:

@Retention(RetentionPolicy.RUNTIME)//a anotação vai ficar disponivel em tempo de execução
@Target(ElementType.METHOD)//anotação para metodos
public @interface Restrito {

}

e minha classe ProdutosController está assim:

@Resource
public class ProdutosController {

    private final ProdutoDAO dao;
    private final Result result;
    private final Validator validator;

    public ProdutosController(ProdutoDAO dao, Result result, Validator validation) {
        this.dao = dao;
        this.result = result;
        this.validator = validation;
    }

    public List<Produto> lista() {.....}

    @Restrito
    public void adiciona(Produto produto){....}
    @Restrito
    public void formulario(){}

    @Restrito
    public Produto edita(Long id){....}

    @Restrito
    public void altera(Produto produto){....}

    @Restrito
    public void remove(Long id){....}
}

Mesmo mapeando os métodos que eu quero bloquear, eu consigo acessar através da url.

Agora onde está o erro?? To batendo cabeça aki mas ainda não visualizei …

Até +.

2 Respostas

G

Anote seu interceptor com @Intercepts.

Jhoseph_Araujo

Eita vacilo feio ahsuuashu. Valeu garcia-jj deu certinho aki. vlw!!

Criado 31 de maio de 2011
Ultima resposta 31 de mai. de 2011
Respostas 2
Participantes 2