gpt4 book ai didi

ruby-on-rails - 用户模型声明性授权 'if_attribute' 问题

转载 作者:行者123 更新时间:2023-12-04 06:52:28 24 4
gpt4 key购买 nike

我正在使用 authlogic (2.1.3) 和 declarative_authorization (0.4.1) 来控制对我的应用程序的访问。

所有授权都按预期工作,除了被分配编辑角色的用户无法更改他们的(由 authlogic 提供的 current_user)配置文件设置(用户模型的一部分)。

“ guest ”角色和“管理员”角色按预期工作。

我正在使用已分配编辑器角色的用户(名为“bob”)。在数据库和 IRB session 中验证。

authorization_rules.rb 文件的相关内容:

  role :guest do

# allow anonymous 'user' to create an account
has_permission_on :users, :to => [:new, :create]

# allow anonymous 'user' 'read-only' actions
has_permission_on :users, :to => [:index, :show]

end

role :editor do

# allow authenticated User to see other users
has_permission_on :users, :to => [:index, :show]

# allow authenticated User to update profile; doesn't work
has_permission_on :user, :to => [:edit, :update] do
if_attribute :user => is { user }
end

end

role :administrator do

# 'full control'
has_permission_on :users, :to => [:index, :show, :new, :create, :edit, :update, :destroy]

end

我认为问题与 if_attribute :user => { user } 有关。 if_attribute 似乎暗示 :user 应该是被测试事物的属性(或属性),在这种情况下是用户模型,而不是事物本身。我寻找了一个 if_self 方法或类似的东西,但我什么也没看到。

帮助表示赞赏。

最佳答案

找到解决办法;正如我怀疑的那样,它确实与 if_attribute 方法有关。正确的角色设置是:

role :editor do

# allow authenticated user to see other users
has_permission_on :users, :to => [:index, :show]

# allow authenticated user to update profile
has_permission_on :users, :to => [:edit,:update] do
if_attribute :id => is { user.id }
end

end

关于ruby-on-rails - 用户模型声明性授权 'if_attribute' 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924043/

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