Ruby on rails 3 铁路及;设计:如何认证特定用户?

Ruby on rails 3 铁路及;设计:如何认证特定用户?,ruby-on-rails-3,authentication,devise,Ruby On Rails 3,Authentication,Devise,我第一次在rails中使用Desive,但有一件事我遇到了麻烦: 我使用了提供的authenticate\u用户方法”来限制对页面的访问,如下所示: 在\u筛选器之前:验证\u用户!,:only=>[:编辑、显示、更新、创建、销毁] 但这允许任何登录用户访问任何其他用户:edit操作,我只想将其限制为该用户。我该怎么做呢?你应该研究一下授权,比如CanCan。或者创建一个新方法,如下所示: # Create an admin boolean column for your user table.

我第一次在rails中使用Desive,但有一件事我遇到了麻烦: 我使用了提供的
authenticate\u用户方法”来限制对页面的访问,如下所示:
在\u筛选器之前:验证\u用户!,:only=>[:编辑、显示、更新、创建、销毁]


但这允许任何登录用户访问任何其他用户
:edit
操作,我只想将其限制为该用户。我该怎么做呢?

你应该研究一下授权,比如CanCan。或者创建一个新方法,如下所示:

# Create an admin boolean column for your user table.

def authenticate_admin!
  authenticate_user! and current_user.admin?
end

在编辑方法中,您需要检查用户是否拥有该记录:

def edit
   @record = Record.find(params[:id])
   if @record.user == current_user
      @record.update_attributes(params[:record])
   else
      redirect_to root_path
   end
end

嗨,我刚试过这个。我得到了以下错误:
未初始化的常量用户controller::Record
而且我发现像这样一个开发良好的身份验证方法并没有直接支持这样的东西,这真的很令人惊讶。我只是澄清一下,这就是我所做的:
private def verify\u ownership@Record=Record.find(params[:id])如果@record.user==current\u user返回true,否则返回false end
,然后我在我的控制器顶部使用一个
前过滤器
替换
记录
,不管您的实际型号名称是什么。我还假设您的模型有一个
user\u id
列。您可以使用CanCan或声明式身份验证。或者只使用if-then-else语句来确保正确的权限。Deviate处理身份验证,而不是角色。我尝试将
记录
替换为
用户
,然后检查
@Record==current\u User
,但出于某种原因,这仍然允许任何用户编辑任何其他用户的记录,在\u filter
之前针对我所说的
,您需要重定向,而不是返回true/false。把代码拿出来,用实际的方法写出来。我想你误解了我的问题。我不需要可以编辑任何用户记录的管理员用户。我只需要限制用户只能修改他们自己的记录。他确实有点误解,但你还是应该考虑使用CanCan。你在寻找授权,CanCan做得很好。