铁轨和Devise:如何验证特定用户?

发布于 2024-11-26 12:38:29 字数 279 浏览 1 评论 0原文

我第一次将 Devise 与 Rails 结合使用,但遇到了一件事: 我在用户控制器中使用了提供的 authenticate_user! 方法来限制对页面的访问,如下所示: before_filter :authenticate_user!, :only =>; [:edit, :show, :update, :create, :destroy]

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

I'm using Devise for the first time with rails, and I'm having trouble with one thing:
I used the provided authenticate_user! method in my user's controller to restrict access to pages like so:
before_filter :authenticate_user!, :only => [:edit, :show, :update, :create, :destroy]

But this allows any signed in user to access any other users :edit action, which I want to restrict to only that user. How would I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

述情 2024-12-03 12:38:29

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

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

In your edit method, you need to do a check to see if the user owns the record:

def edit
   @record = Record.find(params[:id])
   if @record.user == current_user
      @record.update_attributes(params[:record])
   else
      redirect_to root_path
   end
end
酒绊 2024-12-03 12:38:29

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

# Create an admin boolean column for your user table.

def authenticate_admin!
  authenticate_user! and current_user.admin?
end

You should look into Authorization such as CanCan. Or alternatively create a new method like so:

# Create an admin boolean column for your user table.

def authenticate_admin!
  authenticate_user! and current_user.admin?
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文