gpt4 book ai didi

ruby-on-rails - 通过 id 检查用户权限的最佳方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:16 25 4
gpt4 key购买 nike

在 Rails3 应用程序中,我有许多带有 user_id 的模型 - 这样我是说:它是由某个用户创建的。

喜欢:

current_user.id #=> 1
@item.user_id #=> 1
# this item created by user with id 1

我想限制 current_user 对不是他/她创建的项目的访问。

类似于:

if @item.user_id == current_user.id
#everything is fine
else
#redirect somwhere with flash "You don't have an access here"
end

最好的方法是什么,因为我有多个模型(以及要显示/编辑/销毁的 Controller )和这样的 user_id?

最佳答案

使用CanCan !

有了它,您将能够以声明方式定义权限,如下所示:

can :read, Project, :user_id => user.id

然后执行此规则:

def show
@project = Project.find(params[:id])
authorize! :read, @project
end

authorize! 将引发异常,但您可以以更和平的方式进行检查:

<%= link_to 'Link to a project', @project if can? :read, @project %>

您可以拦截授权错误并在一处进行处理:

class ApplicationController < ActionController::Base
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_url, :alert => exception.message
end
end

关于ruby-on-rails - 通过 id 检查用户权限的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com