Ich habe ein Problem mit dem Device Reset Passwort Link (Rails 4). Es wird korrekt gesendet, aber wenn der Benutzer auf den Link klickt, werden sie zur Startseite weitergeleitet.Devise Reset Password Link Umleitung auf Homepage nur in Produktion
Diese nur passiert in der Produktion. Es funktioniert perfekt in der Entwicklung.
Wenn die Verbindung es sendete, sie in der richtigen Form, zB:
http://website.com/d/users/password/edit?reset_password_token=gmf7ssHx4QRmUBdGb1nr
Lauf Rake Routen, alles mir sagt, es die PasswordsController
in devise zeigen soll:
new_user_password GET /d/users/password/new(.:format) passwords#new
edit_user_password GET /d/users/password/edit(.:format) passwords#edit
PATCH /d/users/password(.:format) passwords#update
PUT /d/users/password(.:format) passwords#update
I Abbildung muss es eine Umleitung in der PasswordsController
von Devise sein. Es gibt nur zwei Stellen in der Editiermethode, in der eine Umleitung stattfinden würde: require_no_authentication
und assert_reset_token_passed
. Also überschreibe ich die Edit-Methoden mit einigen Puts und überprüfe die Logs.
class PasswordsController < Devise::PasswordsController
def require_no_authentication
assert_is_devise_resource!
return unless is_navigational_format?
no_input = devise_mapping.no_input_strategies
authenticated = if no_input.present?
args = no_input.dup.push scope: resource_name
warden.authenticate?(*args)
else
warden.authenticated?(resource_name)
end
if authenticated && resource = warden.user(resource_name)
flash[:alert] = I18n.t("devise.failure.already_authenticated")
puts "=========================="
puts "APPARENTLY IM ALREADY AUTHENTICATED WTF?"
puts "=========================="
redirect_to after_sign_in_path_for(resource)
end
end
protected
# Check if a reset_password_token is provided in the request
def assert_reset_token_passed
if params[:reset_password_token].blank?
puts "reset_password_token is blank!!!"
set_flash_message(:alert, :no_token)
redirect_to new_session_path(resource_name)
else
puts "reset password token NOT blank"
end
end
end
Ergebnisse in der Entwicklung: beide Put-Anweisungen erscheinen wie erwartet.
Ergebnisse in der Produktion: NO puts Aussagen zeigen sich überall. In der Tat, wenn ich die Live-Protokolle überprüfen und zum Zurücksetzen des Passworts Link gehen, zeigt es, dass es direkt auf die Homepage wird:
2016-08-05T23:00:15.166276+00:00 app[web.1]: Started GET "/" for 177.227.42.66 at 2016-08-05 23:00:15 +0000
2016-08-05T23:00:15.168243+00:00 app[web.1]: Processing by PageController#index as HTML
ich auf diesen einen ratlos bin. Wie zeigen die Protokolle ENTWEDER der Methoden, die aufgerufen werden? Ich habe bestätigt, dass die Bereitstellung ordnungsgemäß funktioniert und den heroku-Server neu gestartet.
Danke!
Ändern der Protokollebene in production.rb falls noch nicht geschehen, 'config.log_level =: debug'. – sahil
Bereits geändert:/ – CHawk
Haben Sie eine DNS-Umleitung passiert? Zum Beispiel, leitet Sie etwas von website.com/d/users/ ... auf www.website.com ohne den Pfad? – rdubya