簡體   English   中英

使用有效信息設計無效的電子郵件或密碼

[英]Devise invalid email or password with valid information

這是設置:

~/.rvm/gems/ruby-2.1.2/gems/devise-3.2.4
~/.rvm/gems/ruby-2.1.2/gems/rails-4.1.1
~/.rvm/gems/ruby-2.1.2/gems/mongoid-f9e6fdb1a67c

我面臨着Devise的可怕錯誤,除非經過確認,否則它永遠不接受在用戶中簽名。

我使用默認的devise視圖進行登錄/注冊。 我覆蓋了兩個控制器:確認,以允許按照Devise常見問題解答中的說明從可確認的電子郵件中設置密碼,並且它的作用就像一個超級按鈕。

我還改寫了注冊控制器,以按照Devise常見問題解答中的說明為強參數配置允許的參數,這也很吸引人。

這是我的路線:

  as :user do
    patch '/users/confirmation' => 'confirmations#update', :via => :patch, :as => :update_user_confirmation
  end
  devise_for :users, controllers: { :confirmations => 'confirmations', :registrations => 'registrations' }

這是我的User資源:

class User
  include Mongoid::Document
  devise :database_authenticatable, :registerable,
         :recoverable, :trackable, :validatable,
         :confirmable, :lockable, :timeoutable

  #required fields
end

因此,在創建用戶時,將發送確認郵件,顯示確認頁面,用戶可以設置其密碼(實際上是寫在數據庫中(從控制台檢查)),然后登錄並正確重定向。

現在,如果我注銷用戶並嘗試登錄,我將始終遇到錯誤Invalid email or password並被重定向回sign_in頁面。

我嘗試跟蹤問題出在哪里,我所能找到的是,從未命中authenticatable#with_authentication_hash策略的self.password = auth_values[:password]以外的行(即使auth_values[:password]攜帶正確的密碼)也沒有被發現。

我不知道那條線會出什么毛病。 任何線索都值得歡迎。

=========================編輯======================= =

這是注冊控制器:

class RegistrationsController < Devise::RegistrationsController

  #https://github.com/plataformatec/devise/tree/v3.0.0.rc#strong-parameters
  before_filter :configure_permitted_parameters

  layout 'public'

  private

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up){ |params| params.permit(:first_name, :email) }
  end

end

你為什么要覆蓋注冊控制器? 您可以在應用程序控制器本身中配置允許的參數(如您所指向的文檔中所述)。 我已經做到了,而且效果很好。 我建議您應該刪除到控制器注冊的路由,並使用應用程序控制器允許額外的參數。

好的,我找到了答案,我的團隊中的某個人殘酷地對SessionsController#new.html.erb視圖進行了更改。

代替

<%= f.email_field :email, autofocus: true %></div>

代碼原為

<%= f.email_field :email, autofocus: true, :name => 'email' %></div>

這導致電子郵件字段從用戶哈希中刪除。 似乎沒有人要求(:email),Devise實際上抱怨是因為缺少電子郵件。

謝謝BallsOfSteel的投入,您讓我走上了正軌!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM