使用两个设计模型(用户和管理员)登录时,ActionController :: InvalidAuthenticityToken

时间:2015-09-09 08:41:43

标签: ruby-on-rails devise

我使用两个设计模型,用户和管理员创建一个应用程序。

我正在关注此链接的设计维基,我正在使用选项1 How To: Add an Admin Role

所以我同时打开两个页面,用户登录页面和管理员登录页面。 当我在管理员登录页面登录时它成功但当我在用户页面上登录时它引发了一个错误ActionController :: InvalidAuthenticityToken与其他方式相同。

但如果我先刷新页面然后登录就会成功。

他们使用相同的AuthenticityToken吗?因此,当管理员登录时,AuthenticityToken会被更改,所以当我尝试使用该用户登录时会引发InvalidAuthenticityToken吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您所看到的行为是预期的。这是因为一旦您登录,csrf令牌的值会更改,从而使旧值到期。

答案 1 :(得分:1)

有一种解决方法可以为sign_in中的ApplicationController操作禁用CSRF保护。看这里:https://github.com/plataformatec/devise/issues/3102