Rails 3.2.0 - Перенаправление после вызова JSON - PullRequest
0 голосов
/ 09 марта 2012

У меня есть действие контроллера, которое обрабатывает запросы JSON в основном для обработки перерисовки сетки данных. Но у меня есть этот before_filter, который проверяет, был ли сеанс уничтожен и должен перенаправить обратно на выход из системы. Когда запрос является ajax-запросом, перенаправление происходит нормально. Но если запрос в формате JSON, в журналах отображается «Цепочка фильтров остановлена ​​как: авторизация визуализирована или перенаправлена», но не перенаправляет страницу вообще. Любые подсказки?

Я вижу, что журналы показывают, что он обрабатывает действие как JSON:

Processing by UserController#datatable_redrawings as JSON

Мой метод Contoller:

before_filter :auth

def auth
  if session[:username].blank?
    flash[:error] = "Please login."
    if request.xhr?
      render :js => "window.location = '/logout'"
    else
      respond_to do |format|
        format.html { redirect_to :action => "logout" }
      end
    end
  end
end

1 Ответ

4 голосов
/ 09 марта 2012

Перенаправление на самом деле не является RESTful и не отправляет JS, когда клиент ожидает ответа JSON. Вам следует отправить код статуса HTTP от несанкционированного доступа (401) или что-то подобное.

before_filter :auth

def auth
  if session[:username].blank?
    respond_to do |format|
      format.json { render :json => [], :status => :unauthorized }
      format.html { redirect_to :action => "logout" }
    end
    return false
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...