我正在使用Devise并尝试在表单提交时重定向到另一个站点,但我希望用户注销(结束会话),以便在按下浏览器的后退按钮时使用相同的表单无法重新加载或重新提交。用户必须改为重定向到root_url。
在控制器中,我有下面的设计功能,但是由于超时参数,它没有立即注销。
before_action :authenticate_user!
现在我怀疑是:
理想情况下,会议必须在“成功”之后销毁。重定向, 但是一旦重定向,我们就失去了控制器动作 应用程序到另一个站点发生..那么首先(重定向或会话#结束)和如何?
如果重定向不成功,那么它必须重定向回应用程序而不是销毁会话。现在,我只能通过解析检查uri,但不检查网站地址是否正确,换句话说,网站是否存在或正确加载。如何做到这一点?
要加载新网站,我在redirect_to之后立即进行了睡眠(5)。
apply_mode = 'http://www.google.com'
if @profile.uri?(apply_mode)
redirect_to apply_mode, confirm: 'You are being redirected to an external site.'
sleep(5)
else # Application mode is not url
redirect_to root_path
end
profile.rb
def uri?(string)
uri = URI.parse(string)
%w( http https ).include?(uri.scheme)
rescue URI::BadURIError
false
rescue URI::InvalidURIError
false
端