VRaptor + @GET + Segurança

Bom dia pessoal estou fazendo um poc entre algumas tecnologias para construir um sistema de processos,licitações e contratos,o Vraptor é um candidadato, estou com algumas dúvidas com o metódo GET e segurança, supomos que eu esteja logado, e na tabela de listagem de processos eu tenha um link:

esse link chama a action corresponente

[code]
@Get("/processos/{id}")
public Processo edita(Long id) {

return processoService.find(id);
}[/code]

e sou redirecionado para a tela de edição do processo correspondente,até ai tudo certo, agora o problema:

A questão é, esse sistema vai ser disponibilizado como um serviço, onde temos vários escritórios cadastrados com seus respectivos advogados, supomos que os advogados A e B pertençam ao escritório X, e o advogado C pertença ao escritório y, e que os processos com ids 1,2 e 3 pertençam ao advogado A , os processos 3,4 e 5 ao advogado b e o processo 6 ao advogado C, o problema é que um advogado não deve ver dados de processos de outros advogados, mas navegando com GET se o usuário B por exemplo estiver logado e ir na url e digitar www.sistema.com/edita/5 ele vai ver o processo do advogado A, e pior se for lá e digitar edita/6 ele vê os processos de um advogado de outro escritório, tem alguma maneira fácil de resolver este problema ou vou ter que validar essa restrição para cada action anotada com @Get, no caso seriam 3, processoController,licitaçãoController e contratoController, não vejo como usar validação declarativa, como vcs implementam esse tipo de segurança?

VRaptor 3 ou 4?

vc pode usar o plugin do vraptor-jpa ou vraptor-hibernate e usar a anotação @Load:

@Get("/processos/{processo.id}")
public Processo edita(@Load Processo processo) {...}

cria um interceptor:

@Intercepts(after=ParametersLoaderInterceptor.class) //o interceptor do plugin
public class AuthorizationInterceptor ... {
    //recebe injetado o usuário logado
    //recebe injetado o MethodInfo e usa info.getParameterValues pra inspecionar os parametros

   // no intercept, verifica se o usuário logado pode acessar o recurso.
}

Bacana essa solução, acho que cabe perfeitamente nesses cenários onde apenas segurança declarativa não resolve o problema, muito bacana mesmo o Vraptor, bom estou testando aqui com o vraptor3. Dando uma lida rápida entendi que o @Load por baixo dos panos faz uma chamada ao metódo entityManager.find(Entity.class,Object id) para carregar a entidade, como o @load se comporta com o carregamento lazy de coleções, tipo na pagina andamentos gostaria de carregar apenas oa entidade processo com seus andamentos, na página plenario, apenas os processos e seus julgamentos. Outra dúvida, no caso do sistema em questão tenho que fazer essa restrição de acesso no método @Get de 3 entidades, é possivél eu ter um desse interceptor para cada entidade ou ele é global, desculpa as dúvidas de noob, mas tou realmente querendo aprender sobre o framework e ese tipo de situação ai agente acha bastante no dia-a-dia.

o carregamento lazy é o que vc configurou nas suas entidades. Por padrão coleções são lazy.

o interceptor é do jeito que vc quiser que ele seja :wink:
só implementar o método accepts de acordo.

oi lucas, acredito que encontrei oque queria nesse post aqui:

http://www.guj.com.br/27235-controle-de-seguranca-de-acesso-as-urls-no-vraptor

bem bacana, parabéns à comunidade vraptor