Rails 3 авторизация с аутентификацией по умолчанию - PullRequest
0 голосов
/ 12 декабря 2011

Я работаю над приложением с авторизацией пользователя. Имеет классы List и User. Аутентификация была построена с Райаном Бейтсом http://railscasts.com/episodes/270-authentication-in-rails-3-1

Я не уверен в процессе авторизации. Я прочитал о cancan драгоценный камень. Но я не мог понять.

Я хочу добиться этого:

  1. Пользователь может только просматривать / редактировать / удалять свой собственный список.
  2. Пользователь может только просматривать / редактировать / удалять свой собственный профиль (класс пользователя).

Я не реализую уровень пользователя прямо сейчас. Нет догадок или админ.

Как использовать метод before_filter в list и User контроллер с current_user экземпляром?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

Для этого я бы не стал использовать устройство.Это способ многого для этого простого использования.

Я бы сделал отдельный контроллер для публичных представлений и всегда ссылался на current_user. Не забывайте указывать маршруты для действий в PublicController

class PublicController < ApplicationController
 before_filter :login_required?
 def list
  @list = current_user.list
 end
 def user
  @user = current_user
 end
 def user_delete
  @user = current_user
   # do your magic
 end
 def user_update
  @user = current_user
   # do your magic
 end

# and so on...
end
0 голосов
/ 12 декабря 2011

Поскольку вы определяете current_user в контроллере приложения, это легко.Вы можете использовать before_filter следующим образом в контроллере Users:

class ItemsController < ApplicationController
  before_filter :check_if_owner, :only => [:edit, :update, :show, :destroy]

  def check_if_owner
    unless current_user.admin? # check whether the user is admin, preferably by a method in the model
      unless # check whether the current user is the owner of the item (or whether it is his account) like 'current_user.id == params[:id].to_i'
        flash[:notice] = "You dont have permission to modify this item"
        redirect_to # some path
        return
      end
    end
  end

  ###

end

Вы должны добавить аналогичный метод в UsersController, чтобы проверить, является ли это его профиль, он редактирует.взгляните на Devise , который является рекомендуемым плагином для целей аутентификации.

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