JavaFree.org | RubyOnBr.org

Não permitir visualizar uma view pela URL

Acompanhar Não permitir visualizar uma view pela URL 6 posts, 3 participantes

440002948_b8dc8436b4 Marcelo Júnior 811 posts

Estou abrindo todas minhas views dentro de uma DIV, e gostaria de impedir o acesso a essas views via URL. Como faço isso?

 
Avatar Nando Vieira 88 posts

Por “dentro de uma DIV” sub-entendo que seja AJAX. Se você está utilizando os métodos nativos do Rails (Prototype), pode verificar o header XHR.
No seu application.rb

No seu controller:

Não testei, mas deve funcionar!

 
Avatar Shairon Toledo 1428 posts

Se tiver usando formulário form_remote_tag defina o atributo na view e no controller defina que as ações não poderão ser acessadas por GET e somente por POST.

Todo mundo dentro do :only

 
440002948_b8dc8436b4 Marcelo Júnior 811 posts

Sobre a dica do Shairon, ela soh funciona quando eu executar um POST, mas eu quero que execute quando carregar o controller.

E sobre a dica do Nando, quando eu vou abrir qualquer tela, aparece a seguinte msg:
O Firefox detectou que o servidor esta redirecionando o pedido para este endereço que modo que impede sua conclusão. Soh que isso ocorre em qualquer tela, e inclusive, acessando internamente, não pela URL.

 
440002948_b8dc8436b4 Marcelo Júnior 811 posts

Ehehe…consegui.

No application.rb eu coloquei o metodo xhr_request, mas não o before_filter :xhr_request, e no controller que eu queria impedir o acesso via URL, ai sim eu coloquei esse before_filter. Porem, percebi que sem o skip_before_filter funcionou o mesmo jeito, Qual seria a função deste comando?

 
Avatar Nando Vieira 88 posts

O skip_before_filter não executa o filtro especificado para as actions que você definir.