Oi arquimedes,
o que você poderia fazer neste caso é criar um filtro que verificasse se entre os parametros passados há o parametro id ou não.
Não existindo, simplesmente barraria a entrada de usuários não autenticados.
Sim! Estou verificando se o usuário está autenticado. Porém se o usuário inserir na url outro id ele poderá "ver" os dados de outros usuários, isso eu não quero que aconteça! :S
Falou!
Também estou com esta mesma dúvida... alguém sabe como resolver isso?
Olá.
Amigo, lembre que "id" é usado por todas as entidades em um projeto Grails (a não ser que tenha feito eng. reversa de tabelas que não sigam essa abordagem).
Você quer filtrar apenas isso para determinado Controlador, é isso? Por que se for para todo o projeto a coisa complica pelo motivo supracitado.
O único jeito de resolver isso para o projeto todo é adotar outro padrão de nome para o "id" do usuário. Algo como "idUsuario". Dai, criar 1 filtro resolve teu problema.
Ou então você pode simplesmente abdicar de passar isso via parâmetro e sempre pegar o id do usuário autenticado. Assim não precisa fazer comparação nenhuma.
Minha solução para este problema foi a seguinte:
Como eu não uso o spring security, acabei criando meu próprio modelo de autenticação.
- Tabela de Permissão (Todas as rotinas do sistema que precisam ter permissão para acesso)
- - id
- - nome
- - url ( aqui que eu resolvi o problema )
Se você precisar, pode até incluir o nome do controller.
Tenho um filtro para que verifica o endereço que o usuário está querendo ir, se o controller for permitido para ele, beleza, caso contrário, redireciono para a tela principal com a mensagem de acesso não autorizado.
Esse resolve o problema de url, agora para deixar ele ver apenas o que foi cadastrado por ele (que foi um requisito que tive apenas em 1 parte do sistema) eu inclui ele no sql.
É simples mais funciona. eheheh