设计拒绝让我登录

时间:2014-08-28 01:18:17

标签: ruby-on-rails devise

前一段时间我正在遵循一套关于如何实现可以在Devise中登录的用户名的说明。从指令中实现代码后,我注意到我无法再登录。注册,是的,但是没有。尝试使用无效登录名/密码的闪存通知登录结果

valid_user?方法返回true所以它不是我记住我的密码笨拙的问题。我发现这里讨论了一个相关问题https://groups.google.com/forum/#!topic/plataformatec-devise/4RHM10yJFOw但没有提到那里解决了我的问题。最后,我重写了Devise :: SessionsController的create方法,以便逐步查看发生的情况。我注意到它的第一行有些奇怪:

self.resource = warden.authenticate!(auth_options)

正在输出......

!! #<ArgumentError: uncaught throw :warden>

任何人都知道这里可能会发生什么。

说明:https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

1 个答案:

答案 0 :(得分:0)

所以经过一些环顾四周,我发现我的问题源于我的ApplicationController中的一些代码,由于强大的参数,这在Rails 4中是必需的。

devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:first_name, :last_name, :login, :username, :email, :password, :remember_me) }

我最初包括:username和:email在允许的属性列表中,而不是登录字段(virtual attr,可以是用户名/电子邮件),这是表单中包含的内容。所以,这是一个愚蠢的错误,难以追查解决方案。