7
votes

Comment devrais-je continuer à faire de tous les chemins de congise utilisez HTTPS?

liée: Rails 3 routings SSL Redirects de HTTPS à HTTP à HTTP. (malheureusement n'a pas fonctionné).

Dupliquer, mais la réponse n'a pas fonctionné pour moi: Configuration SSL sur Devise A> P>

J'ai une application Web qui fonctionne bien pendant un moment, mais je dois ajouter SSL aux chemins d'accès à la connexion / Modifier. J'utilise le congé pour l'authentification. J'ai trouvé une entrée dans le Devise Wiki qui a rendu le processus assez simple, mais putain si je peux le faire fonctionner. La partie simple était ceci: p> xxx pré>

et il y a environ 25 lignes de code dans cet essentiel: https://gist.github.com/1040964 p>

J'ai obtenu cela assez bien, mais quand je vous sort, je reçois un 301 des sessions Supprimer une action qui m'envoie à obtenir. P>

 #devise routes
  scope :protocol => 'https://', :constraints => { :protocol => 'https://' } do
    devise_for :users, :controllers => { :registrations => :registrations }
    devise_for :admins
  end


0 commentaires

3 Réponses :


10
votes

Aucune réponse, alors voici ce que j'ai conclu:

  1. Une fois que vous avez accès à un site via HTTPS, n'accumulez pas via HTTP jusqu'à ce que l'utilisateur ne s'inscrit (Attaque de pompesheep). Il y a beaucoup de choses sur le congé dans l'article lié ci-dessus qui n'en discute que d'avoir https sur la page de connexion / sortie. Mauvaise idée. p> li>

  2. Tout ce dont vous avez vraiment besoin est-ce: p>

    #in config/environments/production.rb
    config.to_prepare { Devise::SessionsController.force_ssl }
    config.to_prepare { Devise::RegistrationsController.force_ssl }
    
  3. J'ai eu une tonne de problèmes entourant "After_Sign_in_Path" de Devise. Il s'avère que après_sign_out_path_for code> s'attend à ce que un chemin soit renvoyé - ce n'est pas un événement, il est demandé où l'utilisateur doit être dirigé. Donc je suis retourné root_path: protocole => 'http: //' code> et cela s'en occuper. P> li> ol> p>


0 commentaires

2
votes

Essayez de rendre votre application entière Utiliser https en ajoutant:

#in config/environments/production.rb
config.force_ssl = true


0 commentaires

3
votes

Assurez-vous d'utiliser HTTPS dans tous vos liens de congise (cela évite la redirection FORCE_SSL).

dans vos routes.rb (appliqué uniquement dans l'environnement de production): P>

destroy_user_session_url # use _url instead of _path so the protocol is added!


0 commentaires