0

我希望在不使用数据库的情况下在我的 rails 应用程序上设置基于角色的简单访问,我们使用 CAS 来处理身份验证,以便可以从 CAS 变量中捕获用户名。

我的想法是将用户名映射到哈希中的特定角色(在 application.rb 中,请参阅下面的想法),然后使用该角色来确定内容是否可见。

ROLES = { 
        'admin' => [ 'username1', 'username2'],
        'standard_user' => ['username3']
        }

有人建议我查看 CanCan gem,但这似乎想从我不想设置的用户模型中获取角色信息,主要是因为我们打算将角色信息作为附近的另一个 CAS 变量传递未来。

所以我想知道是否有人知道这个计划是否可行,并可能为我指出任何可能对我有帮助的代码片段的方向

4

1 回答 1

0

即使使用这种设置,您也应该能够使用 cancan。如果您有一个存储用户模型username并且能力围绕该模型旋转,请尝试以下操作ability.rb

# user.rb
ROLES = {
  admin: %w[username1 username2],
  standard_user: %w[username3]
}

# ability.rb
user ||= User.new # username is blank

if User::ROLES[:admin].include?(user.username)
  can :manage, :all

elsif User::ROLES[:standard_user].include?(user.username)
  cannot :manage, Invoices

else
  ...
end
于 2013-02-05T14:01:12.030 回答