Предотвращение прямого URL-доступа к методам контроллера Rails - PullRequest
1 голос
/ 07 января 2011

У меня есть определенный метод контроллера Rails, который возвращает некоторый JSON, когда я делаю ajax-запрос javascript во внешнем интерфейсе.

Однако я хочу запретить пользователям вводить непосредственно URL-адрес, который отображаетJSON, который возвращает метод.Я также хочу иметь возможность выполнять свои запросы AJAX.Как я могу сделать это просто?Спасибо !!

Ответы [ 4 ]

3 голосов
/ 07 января 2011

Просто мысль ... Вы можете сделать что-то нестандартное в своем блоке respond_to для html-запросов.

respond_to do |format|
  format.html { ... } # give them a 404 response?
  format.js { render :json => @obj }
end

Или, возможно, ваш шаблон html.erb с таким именем может просто показывать какое-то сообщение об отказе в доступе. Тогда вы бы просто получили:

respond_to do |format|
  format.html
  format.js { render :json => @obj }
end
2 голосов
/ 08 января 2011

Фильтр response_to в контроллерах rails3 довольно хорош.

YourJsonController < ApplicationController

  respond_to :json

  def index
    #non-json requests will receive a 406 error
  end

end
2 голосов
/ 07 января 2011

Вы можете свернуть свое действие с

    if request.xhr?
       ...
    end
0 голосов
/ 07 января 2011

В вашем routes.rb вы можете добавить: via =>: post, чтобы ваш URL принимал только POST-запросы. См. «Ограничения HTTP-глагола» в http://guides.rubyonrails.org/routing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...