1

我目前正在开发一个网站,但我对带有设计令牌身份验证的确认链接有疑问。

一切正常,在有人注册后,他们会收到一封带有确认链接的电子邮件。此链接正在确认并正常工作,但当此链接过期(我在配置中使用 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。但是当你遇到错误时应该有一个重定向 url

有什么想法吗?先感谢您

4

1 回答 1

1

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

DeviseTokenAuth ConfirmationsController#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',

设计令牌认证文档

于 2020-04-24T07:49:55.473 回答