Ограничить определенные маршруты для зарегистрированных пользователей - PullRequest
1 голос
/ 15 сентября 2011

Мне бы хотелось, чтобы / что-то было доступно только зарегистрированным пользователям, у меня есть помощник current_user, который возвращает идентификатор пользователя или nil, если текущий посетитель не вошел в систему.

Где будет лучшеместо для ограничения доступа к / чему-либо в контроллере или его можно добавить как часть маршрутов?

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Вы должны добавить в controller: before_filter и создать для этого действие.

:before_filter :authenticate 

def authenticate
  redirect_to(registration_path) unless current_user.nil?
end

Также вы можете использовать: only или: кроме параметров фильтра.Или я не задал вопрос?

4 голосов
/ 15 сентября 2011

Вы должны справиться с этим в вашем контроллере. Маршруты решают, куда идти, а затем контролер должен решить, разрешено ли вам идти туда.

В вашем ApplicationController должен быть метод общего назначения authenticate, который проверяет, вошел ли кто-то в систему, и перенаправляет его на страницу входа, если это не так. Тогда в вашем конкретном контроллере:

class SomethingController < ApplicationController
  before_filter :authenticate

  def handler
    #...
  end
end

Вы можете пропустить аутентификацию для конкретной обработки с опцией :except:

before_filter :authenticate, :except => [ :this_one, :and_this_one ]

Существуют и другие опции, см. Подробности в разделе фильтров Обзор контроллера действий .

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