В Ruby, как ограничить методы в моих контроллерах определенными пользователями? - PullRequest
2 голосов
/ 06 февраля 2011

В Ruby on Rails существует ли стандартный способ ограничения определенных методов в контроллере пользователями, которые вошли в систему, или пользователями с определенными правами? Допустим, для простоты у меня есть блог, и я хочу, чтобы все могли иметь доступ к методам «list» и «show» в моем контроллере, но я хочу, чтобы только зарегистрированные пользователи имели доступ к «edit», «update», «создать» и другие методы. Нужно ли программировать логику или хотя бы вызов функции в каждой из этих функций для проверки прав доступа пользователя, или есть более формальный способ?

Ответы [ 3 ]

4 голосов
/ 06 февраля 2011

Вы можете использовать before_filter .

Class blogController
before_filter :authorize, :except => [:list, :show]

def authorize
    #Your code to get a logged in user
    redirect_to blog_path unless user
end
2 голосов
/ 06 февраля 2011

Это называется Перед фильтром

например.

PostsController < ApplicationController
   before_filter :authenticate_admin!, :only => [:index, :show]
1 голос
/ 06 февраля 2011

Проверьте Разработайте и, в частности, Разработайте Wiki для некоторых примеров вашего вопроса.Это поможет с логинами и аутентификацией.Также проверьте CanCan .Это поможет с авторизацией.

С помощью Devise вы можете разрешить всем доступ к действиям «index» (список) и «show» и ограничить людей другими действиями, используя следующую строку в верхней части контроллера блога / записи.

 before_filter :authenticate_user! :except=>[:index, :show]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...