Opa…
galera, eu fiz um esquema de controle de acesso no vraptor.
Eu coloquei tanto pra anotar a classe, qnto ao método.
Porém, quando anota todos os metodos da classe, funciona ok.
Quando anota apenas a classe, nao funciona.
Isto se deve ao meu interceptador… então, vou mostrar como que eu fiz:
@Override
public void intercept(InterceptorStack stack, ResourceMethod method,
Object resource) throws InterceptionException {
if (userSession.isLogged()) {
Method classMethod = method.getMethod();
if (classMethod
.isAnnotationPresent(AuthenticationLevelRequired.class)) {
AuthenticationLevelRequired accessContext = classMethod
.getAnnotation(AuthenticationLevelRequired.class);
if (accessContext.value().equals(AuthenticationLevel.TEACHER)) {
if (userSession.getUser().getPerfil().getDescricao()
.equals("Professor")) {
stack.next(method, resource);
} else {
result.redirectTo(LoginController.class).error();
}
} else if (accessContext.value().equals(
AuthenticationLevel.STUDENT)) {
if (userSession.getUser().getPerfil().getDescricao()
.equals("Aluno")) {
stack.next(method, resource);
} else {
result.redirectTo(LoginController.class).error();
}
} else if (accessContext.value().equals(
AuthenticationLevel.ADMIN)) {
if (userSession.getUser().getPerfil().getDescricao()
.equals("Professor")) {
stack.next(method, resource);
} else {
result.redirectTo(LoginController.class).error();
}
}
}
} else {
result.redirectTo(LoginController.class).index(
request.getRequestURL().toString());
}
}
como que eu faço pra ele verificar a classe?