我正在使用具有多个范围(在本例中为用户范围和管理员范围)的 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 正在发生这种情况。任何帮助表示赞赏。