não “extranho” com X - risos. ainda bem que resolveu !
fabio.cbrandao
Teu conctrole de usuário, pega no banco a permisão e o caminho do roles ?
vlw
Tenta atualizar o paranamer.jar
Tenta atualizar o paranamer.jar
[quote=juniorsatanas]fabio.cbrandao
Teu conctrole de usuário, pega no banco a permisão e o caminho do roles ?
vlw[/quote]
Junior,
Meu controle de usuário pega a permissão do usuário assim que ele efetua o login no sistema…
não entendi a pergunta na parte do caminho de roles…?
[quote=Leandro-SP]java.lang.NoClassDefFoundError: com/thoughtworks/paranamer/AnnotationParanamer
Tenta atualizar o paranamer.jar[/quote]
É o problema foi solucionado troquei a versão do paranamer-1.5.jar para o paranamer-2.2.jar
Opa! Td certo pessoal?
Tô procurando a dica para redirecionar o usuário para a Home caso ele ainda esteja logado, o lance é que eu chamei a index e ela aparareceu, toda zicada, pq o usuário logado possui outro css, então para os recursos/métodos que não tenham restrição seria legal mandar o usuário logado para a Home, alguém têm essa resposta?
Abraço!!
Guevara,
Não entendi direito mas vc quer direcionar o usuário logado para a home quando ele tentar acessar algum método q não tenha permissão? Se for isso anote o seu método Home com
@AccessDeniedPage
public void home() {
}
Oi Fabio!
O problema não é a home, é a index, pois os métodos restritos podem ser anotados para restringir para determinados usuários o acesso. Mas os métodos sem anotação acessados por usuários não logados podem ser acessados tb pelos usuários logados, o problema é que a página é aberta toda zicada, pois o css do usuário logado é diferente dos usuários visitantes.Exemplo:
@Roles(admin)
public void lista() {
}
public void listaVenda() {
}
Repare que o listaVenda tb pode ser acessado pelo admin, mas a página virá com css referente a visitantes e não css do admin.
Como eu estou usando Sitemesh, o decorador de listaVenda() é diferente do lista(). Pra mim o redirecionamento do admin para a home ao acessar a index já tava bom.
Abraço!
@Roles(roles = {"admin"})
public void lista() {
}
public void listaVenda() {
if(usuarioLogado.getUsuario() != null)
result.use(Results.logic()).redirectTo(MeuController.class).lista();
}
Cara tenta fazer isso, incluir uma verificação para ver se o usuário q está acessando o método está logado caso ele esteja redirecione a lógica para o método do usuário logado!!!
Pessoal, a versão do primeiro post é a mais atualizada? Gostei bastante desse plugin, mas não terei tempo para ler o tópico todo. Li a primeira página, a documentação e os primeiros comentários acerca da biblioteca, mas não me ficou claro se a versão do primeiro post é a mais atual.
Cara,
Página 8 (oito) penultimo post coloquei a versão 1.0.2.jar é a versão q eu estou utilizando acredito q seja a ultima…
Oi Spidey, a versão atual postada no tópico é a 1.2, está na página 3 ou 4, o Bronx postou.
Fabio, vou pesquisar aqui como posso resolver esse lance, mas acho que o ideal seria ter algo no web.xml, se o cara estiver logado mandar pra pagina Home. Lembrei do lance de redirecionamento para 404 e 500, se colocar a tag deles lá o usuário é redirecionado para uma JSP personalizada. Poderia ser feito o mesmo com o Restrictrex, algo do tipo:
<login-page>
<login-status>LoggedIn</login-status>
<location>/WEB-INF/jsp/home.jsp</location>
</login-page>
Ou se o cara não estiver logado ir para a index.jsp:
<login-page>
<login-status>LoggedOut</login-status>
<location>/WEB-INF/jsp/index.jsp</location>
</login-page>
Fazer verificação em cada método do sistema fica inviável, seria melhor fazer uma verificação de sessão, se o cara não tiver na sessão manda pra index, se tiver na sessão impedir dele acessar páginas liberadas, não sei se expliquei direito mas a ideia é essa.
O Bronx é que deve saber desse lance… =)
Um exemplo do que eu expliquei, tenho a minha index.jsp, qualquer um pode acessar:
O menú da home, assim como páginas restritas possuem outro tipo de css, para o funcionário o css da página é outro, como na imagem abaixo:
Beleza, mas se o funcionario cair numa index, ou numa venda.jsp. ou aluguel.jsp que são páginas que não possuem restrição alguma, é isto que acontece:
CSS de páginas index com menú de usuário logado, misturou td.
Como estou usando SiteMesh o decorador de index, venda e aluguel.jsp é especifico para usuários não logados, já as páginas com restrições possuem outro decorador. É ai que está o dilema.
Agora entedi!!!
Nesse caso não vou saber t ajudar, não uso o sitemash nem decorador nenhum…
Estou usando o velhor de guerra include das jsps…
Você tem duas opções:
1 - Vc restringe esses recursos “livres” para que somente usuários não logados acessem. Nesse caso, o próprio RestrictRex vai mandar o usuário logado para a página de acesso negado. Ex:
@Roles(roles = "usuario_nao_logado") //usuários que não satisfizerem essa condição serão redirecionados para o método anotado com @AccessDeniedPage
public void foo() {
//stuff
}
;
2 - No início de cada método, verificar se o usuário está logado. Umas três linhas a mais no começo do método, mas vc fica livre pra redirecionar o cara para onde quiser. Ex:
public void bar() {
if (!this.sessionUser.isLoggedIn()) //sessionUser pode ser, por exemplo, o componente que armazena os dados do usuário logado
this.result.redirectTo...//se não estiver logado, redirecione-o para algum lugar
//stuff
}
Enfim, acho que não tem muita relação com o restritor, e mais com a regra de negócios do cara.
Mas estão aí possíveis soluções. :thumbup:
Bronx tu chegou a terminar o demo desse seu recurso ? tipo um CRUD pegando do banco as roles etc… ?
Estou com dúvida nisto :
Não estou conseguindo pegar as roles do banco !
[code]package br.com.restrictrex.project.session;
import java.util.ArrayList;
import java.util.List;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
import br.com.restrictrex.project.model.Usuario;
import br.com.restrictrex.project.roles.Perfil;
@Component
@SessionScoped
public class UsuarioLogado {
private Usuario usuario;
public UsuarioLogado() {
}
public void efetuaLogin(Usuario usuario) {
this.usuario = usuario;
}
public void efetuaLogoff() {
this.usuario = null;
}
public Usuario getUsuario() {
return usuario;
}
public Perfil getPerfil() {
Perfil perfil = new Perfil();
if (this.getUsuario() != null) {
perfil.setLoggedIn(true);
List<String> roles = new ArrayList<String>();
roles.add(this.getUsuario().getRoles());
perfil.setRoles(roles);
}
return perfil;
}
}
[/code]
[code]package br.com.catequese.controller;
import br.com.catequese.security.UsuarioWeb;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import static br.com.caelum.vraptor.view.Results.*;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Hibernate;
import br.com.caelum.vraptor.validator.ValidationMessage;
import br.com.catequese.dao.UsuarioDao;
import br.com.catequese.to.Usuario;
import java.util.List;
@Resource
public class UsuarioController {
private final UsuarioDao dao;
private final Result result;
private final Validator validator;
private final UsuarioWeb usuarioWeb;
public UsuarioController(UsuarioDao dao, Result result, Validator validator, UsuarioWeb usuarioWeb) {
this.dao = dao;
this.result = result;
this.validator = validator;
this.usuarioWeb = usuarioWeb;
}
@Post @Path("/usuario/adiciona")
public void adiciona(Usuario usuario) {
if (dao.existeUsuario(usuario)) {
validator.add(new ValidationMessage("Login já existe", "usuario.login"));
}
validator.onErrorUse(page()).of(UsuarioController.class).formulario();
dao.adiciona(usuario);
result.redirectTo(UsuarioController.class).lista();
}
@Delete @Path("/usuario/{idUsuario}")
public void remove(Integer idUsuario) throws Exception {
Usuario d = dao.carrega(idUsuario);
dao.excluir(d);
result.redirectTo(UsuarioController.class).lista();
}
@Get @Path("/usuario/{idUsuario}")
public Usuario edita(Integer idUsuario){
return dao.carrega(idUsuario);
}
@Put @Path("/usuario/{usuario.idUsuario}")
public void altera(Usuario usuario) {
validator.addAll(Hibernate.validate(usuario));
validator.onErrorUse(page()).of(UsuarioController.class).edita(usuario.getIdUsuario());
dao.atualiza(usuario);
result.redirectTo(UsuarioController.class).lista();
}
@Get @Path("/usuario/novo")
public void formulario() {
}
@Get @Path("/usuario/todos")
public List<Usuario> lista(){
return dao.listaTudo();
}
@Get @Path("/usuario/login")
public void loginForm() {
}
@Post @Path("/usuario/login")
public void login(Usuario usuario) throws Exception {
Usuario carregado = dao.carrega(usuario);
if (carregado == null) {
validator.add(new ValidationMessage("Login e/ou senha inválidos", "usuario.login"));
}
validator.onErrorUse(page()).of(UsuarioController.class).loginForm();
usuarioWeb.login(carregado);
result.redirectTo(AlunoController.class).formulario();
}
@Path("/usuario/logout")
public void logout() {
usuarioWeb.logout();
result.redirectTo(UsuarioController.class).loginForm();
}
}
[/code]
no meu usuário controller:
[code] @Get @Path("/usuario/todos")
public List<Usuario> lista(){
return dao.listaTudo();
}
[/code]
para implementar isto:
[code]package br.com.restrictrex.project.controller;
import br.com.bronx.vraptor.restrictrex.annotation.LoggedIn;
import br.com.bronx.vraptor.restrictrex.annotation.Roles;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.restrictrex.project.model.Usuario;
import br.com.restrictrex.project.session.UsuarioLogado;
@Resource
public class UsuarioController {
private final UsuarioLogado usuarioLogado;
public UsuarioController(UsuarioLogado usuarioLogado) {
this.usuarioLogado = usuarioLogado;
}
public void login(Usuario usuario) {
this.usuarioLogado.efetuaLogin(usuario);
}
@LoggedIn
@Roles(roles = {"admin"})
@Path("/test1")
public void test1() {
}
@LoggedIn
@Roles(roles = {"admin", "moderador"})
@Path("/test2")
public void test2() {
}
@LoggedIn
@Roles(roles = {"admin", "moderador", "usuario"})
@Path("/test3")
public void test3() {
}
@LoggedIn
@Roles(roles = {"moderador"})
@Path("/test4")
public void test4() {
}
@LoggedIn
@Roles(roles = {"moderador", "usuario"})
@Path("/test5")
public void test5() {
}
@LoggedIn
@Roles(roles = {"usuario"})
@Path("/test6")
public void test6() {
}
}
[/code]
Bom, gostei muito da idéia dessa contribuição, deixa de forma simples o controle de acesso, estou tentando implementar mas ao acessar minha URL: http://localhost:8080/BMWEB/consultor/index está ocorrendo o erro:
[code]org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘accessControllerInterceptor’ defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\intercepetor\AccessControllerInterceptor.class]: Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.bronx.accesscontrol.restriction.RestrictionChecker]: : No matching bean of type [br.com.bronx.accesscontrol.restriction.RestrictionChecker] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.bronx.accesscontrol.restriction.RestrictionChecker] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
java.util.AbstractList$Itr.next(AbstractList.java:345)
com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
com.google.common.collect.Lists.newArrayList(Lists.java:131)
com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.bronx.accesscontrol.restriction.RestrictionChecker] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:896)
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:765)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
java.util.AbstractList$Itr.next(AbstractList.java:345)
com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
com.google.common.collect.Lists.newArrayList(Lists.java:131)
com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)[/code]
As classes estão assim:
ConsultorController:
@LoggedIn
@AccessDenied(loginPage="../cliente/Tela_Login", accessDeniedPage="../cliente/Tela_Login")
public void index() {
}
LoginControl:
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package br.bmweb.controller;
import br.com.bronx.accesscontrol.interfaces.Login;
import br.com.bronx.accesscontrol.interfaces.Profile;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
/**
*
-
@author cristiano
*/
@Component
@SessionScoped
public class LoginControl implements Login{private boolean loggedIn;
private Profile profile;@Override
public boolean isLoggedIn() {
return this.loggedIn;
}@Override
public void setLoggedIn(boolean loggedIn) {
this.loggedIn = loggedIn;
}@Override
public Profile getProfile() {
return this.profile;
}@Override
public void setProfile(Profile profile) {
this.profile = profile;
}
}[/code]
AccessControlInterceptor:
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package br.bmweb.intercepetor;
import br.bmweb.bean.Usuario;
import br.bmweb.bean.UsuarioWeb;
import br.bmweb.controller.LoginControl;
import br.com.bronx.accesscontrol.exception.RestrictionAnnotationException;
import br.com.bronx.accesscontrol.interfaces.Login;
import br.com.bronx.accesscontrol.restriction.RestrictionChecker;
import br.com.bronx.accesscontrol.restriction.RestrictionResult;
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.resource.ResourceMethod;
import br.com.caelum.vraptor.view.Results;
/**
*
-
@author cristiano
*/
@Intercepts
public class AccessControllerInterceptor implements Interceptor {private RestrictionChecker restrictionChecker;
private Result result;
private Login login;public AccessControllerInterceptor(LoginControl login, RestrictionChecker restrictionChecker, Result result){
this.login = login;
this.restrictionChecker = restrictionChecker;
this.result = result;
}@Override
public boolean accepts(ResourceMethod method) {
return this.restrictionChecker.hasRestriction(method.getMethod());
}public void intercept(InterceptorStack stack, ResourceMethod resourceMethod,
Object resourceInstance) throws InterceptionException {
RestrictionResult restrictionResult;
try {
restrictionResult = restrictionChecker.checkRestrictions(resourceMethod.getMethod(), login);
} catch (RestrictionAnnotationException e) {
throw new InterceptionException(e);
}
if (restrictionResult.isRestricted()){
result.use(Results.page()).redirect(restrictionResult.getDestination());
} else {
stack.next(resourceMethod, resourceInstance);
}
}
}[/code]
Meu web.xml tá assim:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>BMWEB</display-name>
<filter>
<filter-name>vraptor</filter-name>
<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>
<filter-mapping>
<filter-name>vraptor</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.bronx</param-value>
</context-param>
</web-app>
No console mostra isto:
16:12:19,646 INFO [VRaptor ] VRaptor 3.1.1 successfuly initialized
16:12:33,594 DEBUG [VRaptor ] VRaptor received a new request
16:12:33,688 DEBUG [DefaultRequestExecution] executing stack DefaultRequestExecution
16:12:33,759 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
16:12:33,759 DEBUG [DefaultResourceTranslator] trying to access /consultor/index
16:12:33,797 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: ConsultorController.indexConsultorController.index()]
16:12:33,827 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
16:12:33,835 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor
Tá faltando algo?
Gostei da ideia do controle de acesso. mas em meio a tantas mensagens, não consegui identificar o que está valendo.
Percebi que foi prometido um tutorial (ou resumo) mas não vi link… alguem sabe informar se foi feito?
tfa
O Bronx me passou o arquivo atualizado. O nome agora é SACI.
Vou elaborar um passo a passo e fazer a postagem amanhã