Das Flag config.allow_insecure_sign_in_after_confirmation
wird in Devise nicht mehr unterstützt.
Während Sie sich der möglichen Sicherheitsbedenken bewusst sein sollten, wenn Sie Benutzer automatisch anmelden, wenn sie ihr Konto bestätigen (http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/), kann der Vorteil in Bezug auf die Benutzerfreundlichkeit den Sicherheitsabwägung wert sein.
Schließlich besteht das Sicherheitsrisiko darin, dass a) der Benutzer seine E-Mail falsch eingibt, b) sie ihren Fehler nicht sofort korrigiert, c) die von ihnen eingegebene E-Mail einer gültigen und funktionierenden E-Mail entspricht; Person, die die E-Mail falsch empfängt, öffnet sie und klickt auf den Link.
Wenn dies ein akzeptables Risikoprofil für Ihre Anwendung ist, können Sie die devise ConfirmationsController außer Kraft setzen:
class ConfirmationsController < Devise::ConfirmationsController
def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
yield resource if block_given?
if resource.errors.empty?
set_flash_message(:notice, :confirmed) if is_flashing_format?
sign_in(resource) # <= THIS LINE ADDED
respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
else
respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
end
end
end
Und Weg, um es in Ihrem routes.rb
:
devise_for :users, controllers: { confirmations: 'confirmations' }
Hat Ihr Bestätigungslink ein 'access token'? –
ja, beispiel link: http: // localhost: 3000/benutzer/bestätigung? Confirmation_token = ede7fbc3203644c0ff40cf31844389d460607a09d5f13ce95bcddd25c8fce667 –