我知道这已被问了很多,而且我已经看到很多解决方案似乎不适用于我的问题,所以如果我错过了什么,我会道歉。
使用带有ng-token-auth和devise-token-auth的设计视图发送确认电子邮件时,确认电子邮件链接没有redirect_url
,并在点击时显示错误页面然而,确认api电话会成功。
在ng-token-auth
配置中我已设置:
confirmationSuccessUrl: 'http://localhost:8000/#!/login'
devise_token_auth.rb
{p>我还设置了:
config.default_confirm_success_url = 'http://localhost:8000/#!/login'
我也尝试按照许多其他解决方案的建议覆盖ConfirmationsController
,但都无济于事。
我通过在confirmation_instructions.html.erb
电话中添加redirect_url
来修改设计视图confrimation_url
,从而临时解决了这个问题:
confirmation_url(@resource, redirect_url:'http://localhost:8000/#!/login', confirmation_token: @token)
提前致谢,如果我能提供任何其他信息,请告诉我。
答案 0 :(得分:0)
似乎链接始终发送HTTP 406
,因此对象始终有错误,但并不总是消息。目前,我通过覆盖确认控制器实现了(一个丑陋的)解决方案:
def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
yield resource if block_given?
if resource.errors.messages.empty?
set_flash_message!(:notice, :confirmed)
#respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
if signed_in?(resource_name)
#signed_in_root_path(root_path)
redirect_to root_path + '#!/users/' + resource.id.to_s
else
redirect_to root_path + '#!/login'
end
else
respond_with_navigational(resource.errors, status: :unprocessable_entity){ render :new }
end
end
在最坏的情况下,这将重定向到登录页面。由于确认api呼叫实际上正在运行,因此用户可以登录。如果失败,我可以显示闪烁消息,表明他们应该尝试重新发送确认电子邮件。
如果有人知道更好的解决方案或我做错了导致HTTP 406
请告诉我!