[英]Rails Devise - Forgot password asking for login
我正在管理系統上的用戶,因此它可以是:recoverable。 一切正常,除非單擊鏈接重置密碼,然后要求用戶登錄。 這沒有意義,因為它將通過發送到電子郵件的令牌進行重置。 任何人都面臨這個問題,您不知道可能是什么原因? 謝謝!
編輯:
好的,這是我的錯誤:這里有一個before_action authenticate_user! 在我的應用程序控制器上。 如何僅為該重置密碼添加例外?
看看你的before action
在哪個控制器處理此頁面(可能是會話控制器或用戶控制)方法。 我的猜測是您可能正在撥打諸如authenticate_user!
類的電話authenticate_user!
該鏈接的操作之前。
您在代碼中發現了問題,但我正在回答另一個問題:
如何僅為該重置密碼添加例外?
我要更改為:
您應該
authenticate_user!
在ApplicationController
?
顯然,既然我提出了這個問題,答案是否定的。
原因如下:
authenticate_user!
不是為ApplicationController
設計的,因為ApplicationController
是每個控制器。 也就是說,它是為限制對控制器的訪問而設計的,是的,但不是專門針對ApplicationController
。 首先,您必須添加此內容的原因是,例如,僅允許登錄用戶編輯自己的文章。 您不會有人來編輯文章,但是您確實希望任何人都可以看到文章。 我對您的應用程序一無所知,但通常情況下,身份驗證是一個案例,但有非常特殊的例外。 因此,即使您必須粘貼: authenticate_user!
很多次沒關系。 還有另一種方法(這就是為什么我要你的routes.rb
)。
PS您的第一個問題的答案:
before_action :authenticate_user!, unless: 'params[:controller] == "devise_passwords"'
要么
before_action :authenticate_user!, unless: 'params[:controller] == "passwords"'
我忘記了此控制器的字符串表示形式。
但是同樣,這很糟糕,並且隨着您的應用程序的增長而無法很好地擴展
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.