2014-06-04 68 views
0

用戶確認自己的帳戶後,當他點擊發送到他的電子郵件的鏈接時,他會自動登錄。如何禁用此功能?可能嗎?設計:在紅寶石軌道上可以確認

+1

您正在使用哪個版本的設計?在3.1和更高版本中,除非在config/initializers/devise.rb中有'config.allow_insecure_sign_in_after_confirmation = true',否則缺省值是用戶* not *被登錄。 – Tim

+0

好吧,是的,你是對的,只是從2.2.4更新到3.2.4。我重新啓動了服務器,但用戶仍然自動登錄該項目。還有什麼我應該做的嗎? – Flezcano

+1

如果你在'config/initializers/devise.rb'中肯定沒有'config.allow_insecure_sign_in_after_confirmation = true',那麼瞭解項目中的相關設計路線以及是否定製/覆蓋任何項目設計師的控制器/視圖。 – Tim

回答

1

這是3.1版本之前版本的默認行爲,據我所知,沒有無用的方法來改變它。我想你會需要重寫設計的ConfirmationsController

3.1中的行爲已更改,因此默認情況下用戶是而不是使用確認鏈接後登錄。如果您想保留舊的登錄行爲,則需要在config/initializers/devise.rb中有config.allow_insecure_sign_in_after_confirmation = true

正如評論中所述,從devise 2.2.4升級到3.2.4會導致行爲改變成你想要的。

Devise 3.1引入了一些其他與安全相關的更改。更多信息,請訪問:http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/

注意的是,在3.1的其它變化之一是,確認/復位/解鎖令牌是數據庫中的存儲消化,所以事先存儲的令牌不會工作,除非你在設置config.allow_insecure_token_lookup = trueconfig/initializers/devise.rb,理想情況下是暫時的,所以只需要一個令牌的用戶可以使用它,但在刪除該行後,所有未來的查找都會假設消化的令牌位於db中。請參閱上面的鏈接瞭解更多詳情。