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é +.