[Vraptor] Impedir acesso a URI por Browser  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
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?
rogelgarcia
GUJ Master
[Avatar]

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
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.
rogelgarcia
GUJ Master
[Avatar]

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
boneazul
Java Ninja
[Avatar]

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

[Email]
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?
rogelgarcia
GUJ Master
[Avatar]

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
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.
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.
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.
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

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
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.




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.

 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team