前一段时间我正在遵循一套关于如何实现可以在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>
任何人都知道这里可能会发生什么。
答案 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,可以是用户名/电子邮件),这是表单中包含的内容。所以,这是一个愚蠢的错误,难以追查解决方案。