cancan / cantango在第一次请求后丢失user / user_session和/或角色

时间:2011-09-08 12:55:53

标签: ruby-on-rails ruby-on-rails-3 cancan

Vanilla authlogic / cantango设置,在测试期间使用硬编码roles_list进行测试,返回[:user]。测试permissions.yml文件:

roles:
  user:
    can:
      manage:
      - User

在第一次请求时,user_can?(:manage, User)符合我的预期。然而,在随后的请求中,它不再是真的,我的许可就消失了。

每个请求都会更改current_usercurrent_user_session个变量;不确定是不是因为我在开发环境中并且正在重新加载某些东西,但它会勾勒出我的一点点。 Duh:/

ApplicationController中的实现遵循默认的authlogic示例。

如果我加载控制台:

pry(main)> u = User.first
=> #<User id: 2, email: "ohai@wtf.com", [...]
pry(main)> a = CanTango::Ability.new u
=> [lots of stuff, available on request]
pry(main)> a.can?(:manage, User.new)
=> true
pry(main)> a.can?(:manage, User.new)
=> true

我试图在cantango.rb中关闭cantango的缓存(以防万一)每个cantango的文档[...]&gt;

任何提示/提示/指针/来源/文档?

1 个答案:

答案 0 :(得分:2)

如果我将permissions.yml文件更改为以下(这些是角色,理论上不是用户,但没有guest角色,我从未在代码中的任何地方引用它,它不起作用)工作

roles:
  user:
    can:
      manage:
      - User
  guest:
    cannot:
      manage:
      - User

到目前为止,我仍然需要暂停缓存。

我现在放弃了cantango;虽然我有重要的基于角色的权限需求,但这引起的麻烦不值得,到目前为止,似乎使用一些相同元技术的更有针对性的解决方案将更清晰,更容易。