| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/07/2011 21:25:34
|
Lucas Emanuel
GUJ Master
Membro desde: 09/08/2009 23:48:57
Mensagens: 1143
Localização: Heap
Offline
|
Tenho um Controller com um método para deletar anotado com URI: /delete/id
No entanto, eu quero permitir acesso a ela somente internamente por JS, onde faço uma requisição delete.
Atualmente eu posso digitar no browser: www.dominio.com.br/delete/12 -> deleta o regsitro
Tem como bloaquear isso?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/07/2011 22:18:13
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
Não.
JS é Javascript né? Você quer que seja possível apenas por AJAX.. é isso?
Então a resposta é: não.
This message was edited 2 times. Last update was at 07/07/2011 22:19:33
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/07/2011 22:21:42
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Uma coisa que o Lucas da Caelum sempre me fala é para sempre que você for alterar o estado do objeto o GET não deve ser usado.
Para isso você deve anotar teu médodo com @Delete e usar um POST com o _method=DELETE.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/07/2011 22:30:45
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
garcia-jj wrote:Uma coisa que o Lucas da Caelum sempre me fala é para sempre que você for alterar o estado do objeto o GET não deve ser usado.
Para isso você deve anotar teu médodo com @Delete e usar um POST com o _method=DELETE.
É uma solução!!
Retiro meu não.. ehehhehe
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/07/2011 02:10:35
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
Lucas Emanuel wrote:Tenho um Controller com um método para deletar anotado com URI: /delete/id
No entanto, eu quero permitir acesso a ela somente internamente por JS, onde faço uma requisição delete.
Atualmente eu posso digitar no browser: www.dominio.com.br/delete/12 -> deleta o regsitro
Tem como bloaquear isso?
http://vraptor.caelum.com.br/documentacao/resources-rest/
This message was edited 1 time. Last update was at 08/07/2011 02:13:54
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/07/2011 20:14:30
|
lfcdtv
JavaBaby
Membro desde: 26/05/2009 09:03:56
Mensagens: 88
Offline
|
é possível implementar um interceptor para verificar se o usuário está com o javascript ativado a cada request?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/07/2011 20:37:16
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
Se você está perguntando, se é impossivel implementar um interceptor que diga se a requisição veio da url, ou de um javascript.. aí sim.. a resposta é: impossível (se as duas forem GET)
Por isso respondi não a primeira pergunta.. mas como garcia-jj sugeriu, uma reestruturação da app faz com que a requisição tenha que ser feita por código, pois não é possível enviar um comando por requisição DELETE ou POST por digitação na url do browser (pelo menos dos browsers populares)
Você continua não sabendo se veio do javascript ou url do browser.. mas como esse tipo de requisição (POST) não vem da url nos browsers populares é possível chegar a um comportamento desejável.
This message was edited 1 time. Last update was at 08/07/2011 20:39:48
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/07/2011 06:27:33
|
lfcdtv
JavaBaby
Membro desde: 26/05/2009 09:03:56
Mensagens: 88
Offline
|
Só quero verificar se o javascript está ativado no browser com um interceptor.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/07/2011 08:03:53
|
Renato Machado
JavaChild
Membro desde: 23/06/2011 08:08:28
Mensagens: 127
Offline
|
garcia-jj wrote:Uma coisa que o Lucas da Caelum sempre me fala é para sempre que você for alterar o estado do objeto o GET não deve ser usado.
Para isso você deve anotar teu médodo com @Delete e usar um POST com o _method=DELETE.
Você pode alterar quantos objetos quiser em um método GET, o que não deve alterar é o estado do resource.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/07/2011 08:16:46
|
Renato Machado
JavaChild
Membro desde: 23/06/2011 08:08:28
Mensagens: 127
Offline
|
Lucas Emanuel wrote:Tenho um Controller com um método para deletar anotado com URI: /delete/id
No entanto, eu quero permitir acesso a ela somente internamente por JS, onde faço uma requisição delete.
Atualmente eu posso digitar no browser: www.dominio.com.br/delete/12 -> deleta o regsitro
Tem como bloaquear isso?
Só configurar o AJAX com o header User-agent e fazer a verificação do mesmo no lado servidor.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/07/2011 16:42:08
|
Lucas Emanuel
GUJ Master
Membro desde: 09/08/2009 23:48:57
Mensagens: 1143
Localização: Heap
Offline
|
Renato Machado wrote:
Lucas Emanuel wrote:Tenho um Controller com um método para deletar anotado com URI: /delete/id
No entanto, eu quero permitir acesso a ela somente internamente por JS, onde faço uma requisição delete.
Atualmente eu posso digitar no browser: www.dominio.com.br/delete/12 -> deleta o regsitro
Tem como bloaquear isso?
Só configurar o AJAX com o header User-agent e fazer a verificação do mesmo no lado servidor.
Oi Renato, deixa ver se entendi. Seria mais ou menos assim:
No meu JS:
E no meu Controller faço a verificação:
Pelo menos deu certo, permitindo a exclusão somente por Ajax. Quando tento por URL ele retorna 500 causado por NullPointer na no getHeader.
Agora a pergunta: Essa solução seria a correta? OU a solução proposta por garciajj seria mais adequada? POG?
This message was edited 2 times. Last update was at 09/07/2011 17:13:16
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/07/2011 17:32:37
|
Lucas Emanuel
GUJ Master
Membro desde: 09/08/2009 23:48:57
Mensagens: 1143
Localização: Heap
Offline
|
Eu não posso simplesmente anotar o método de remoção do Controller com @Delete("/delete/{id}")
E no JS colocar:
Dessa forma a tentativa de acessar por URL retorna 405, e por Ajax exclui normalmente.
ps. Só nao testei no IE
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/07/2011 18:41:21
|
Renato Machado
JavaChild
Membro desde: 23/06/2011 08:08:28
Mensagens: 127
Offline
|
Lucas Emanuel wrote:
Pelo menos deu certo, permitindo a exclusão somente por Ajax. Quando tento por URL ele retorna 500 causado por NullPointer na no getHeader.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 10:56:24
|
Lucas Emanuel
GUJ Master
Membro desde: 09/08/2009 23:48:57
Mensagens: 1143
Localização: Heap
Offline
|
Renato Machado wrote:
Lucas Emanuel wrote:
Pelo menos deu certo, permitindo a exclusão somente por Ajax. Quando tento por URL ele retorna 500 causado por NullPointer na no getHeader.
Bacana, deu certo.
|
|
|
 |
|
|