【问题标题】:Devise Token Auth confirmation email link expired设计令牌身份验证确认电子邮件链接已过期
【发布时间】:2020-04-23 21:13:50
【问题描述】:

我目前正在开发一个网站,但我在使用设计令牌身份验证的确认链接时遇到问题。

一切正常,在有人注册后,他们会收到一封带有确认链接的电子邮件。此链接正在确认并正常工作,但当此链接过期(我在配置中使用 config.confirm_within = 1.day 进行设置)或有人再次单击此链接时,他们会收到“路由错误”。所以我想应该有一种方法可以在该链接过期时重定向到主页,并且可能会显示一条消息,说他们必须再次要求电子邮件确认..

我有这个确认路线:

new_api_user_confirmation GET    /api/auth/confirmation/new(.:format)   devise_token_auth/confirmations#new
api_user_confirmation     GET        /api/auth/confirmation(.:format)   devise_token_auth/confirmations#show
                          POST       /api/auth/confirmation(.:format)   devise_token_auth/confirmations#create

我使用最后一个路由 POST 重新发送电子邮件并且它正在工作,但另一个路由不起作用,这是有道理的,因为我正在使用 API。但是当你遇到错误时应该有一个重定向网址

有什么想法吗?提前谢谢你

【问题讨论】:

    标签: ruby-on-rails devise-confirmable devise-token-auth


    【解决方案1】:

    您可以覆盖 DeviseTokenAuth::ConfirmationsController#show 并重定向到 root_path

    DeviseTokenAuthConfirmationsController#show

    class ConfirmationsController < DeviseTokenAuth::ConfirmationsController    
      def show
        ...
        else
          # raise ActionController::RoutingError, 'Not Found'
          redirect_to :root_path
        end
      ...
    

    在路线中

    mount_devise_token_auth_for 'User', at: 'auth', controllers: {
      # confirmations:  'devise_token_auth/confirmations',
      confirmations:  'confirmations',
    

    devise-token-auth docs

    【讨论】:

    • 完美......经过大量阅读,我昨天做了这个......你的答案是正确的。现在我正在为其他事情苦苦挣扎......我很想根据错误发送一条消息..他们在控制器中有一个名为>resource
    • 您可以使用@resource.errors 对象。获取第一条消息@resource.errors.full_messages.firstdocs
    • 非常感谢大师!!.. 一切正常!!.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多