我使用用户授权处理应用。它有List
和User
个类。身份验证是使用Ryan Bates http://railscasts.com/episodes/270-authentication-in-rails-3-1
我不确定授权程序。我读到了cancan
gem。但我无法理解。
我想实现这个目标:
我现在没有实现用户级别。没猜测或管理员。
如何在list
和User
控件中使用current_user
实例的before_filter方法?
答案 0 :(得分:0)
由于您在应用程序控制器中定义current_user
,因此这很容易。您可以在Users控制器中使用before_filter
:
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,这是用于身份验证的推荐插件。
答案 1 :(得分:0)
为此,我不会使用设计。对于这种简单的用途来说,这是很重要的。
我会为公共视图创建一个单独的控制器,并始终参考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