3

我正在使用具有多个范围(在本例中为用户范围和管理员范围)的 Devise,并且管理员能够使用Devise wiki 上的方法“成为”用户。这很好用,除了我有一个特定页面需要使用身份验证令牌,这会导致在用户和管理员范围内登录的会话出现问题。该页面向控制器生成 POST,该控制器要求用户使用用户身份验证令牌登录。POST 成功,但之后,管理员范围已注销。(意味着 admin_signed_in? 返回 false。)其他页面执行 POST 到同一控制器而不需要 auth 令牌按预期工作,而无需注销 admin 范围。

我怀疑 token_authenticable 发生了一些事情,其中​​除与该特定令牌关联的范围之外的任何范围的身份验证都被注销。我在设计 gem 源中搜索了对设计 sign_out 和warden logout 方法的引用,这些方法可以作为 token_authenticable 功能的一部分调用,但找不到任何东西。

Devise 1.3.4 正在发生这种情况。任何帮助表示赞赏。

4

1 回答 1

1

如果其他人正在寻找解决方案,我发现我在对我的问题的评论中描述的 before_filter/after_filter 方法似乎工作正常。我认为更好、更通用的解决方案是对设计 gem 和对warden 的底层调用进行更改,但还没有时间针对这个特定问题进行这些更改。

于 2012-05-26T21:12:30.487 回答