Пропуск авторизации для определенных методов - PullRequest
4 голосов
/ 25 апреля 2010

Согласно книге Agile Development, у меня есть Admin MVC, который контролирует, как пользователи входят в систему. В ApplicationController у меня есть before_filter, который проверяет авторизацию.Таким образом, это проверит, что пользователь вошел в систему для каждой страницы.

Проблема в том, что я хочу, чтобы каждый имел доступ к методу new, например, в Users (то есть любой должен иметь возможность создать нового пользователя -естественно! Только пользователи с правами администратора должны иметь доступ к другим методам в UsersController, таким как edit и т. д.).Какой лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 25 апреля 2010

Вы можете любой из этих

before_filter :except=>[:method_name]  #methods you want to skip filter

OR

before_filter :only=>[:method_name]    #methods you want to be filtered before called.

EDITED

before_filter :filter_method, :except=>[:method_name]  #methods you want to skip filter

OR

before_filter :filter_method, :only=>[:method_name]    #methods you want to be filtered before called.
3 голосов
/ 25 апреля 2010

Вы можете использовать метод skip_before_filter в дочерних классах контроллера, чтобы пропустить обработку фильтра по умолчанию. Например:

class UsersController < ApplicationController
  skip_before_filter :authorize, :only => [:new, :create]
end

- пропустит предыдущий фильтр с именем :authorize только для действий new и create в пользовательском контроллере, т. Е. Фильтр все равно будет применен ко всем другим действиям.

0 голосов
/ 26 апреля 2010

Я бы также предложил использовать Gem CanCan для авторизации, поскольку он имеет действительно простой и понятный способ определения правил авторизации. http://github.com/ryanb/cancan

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