12
votes

Deviser l'authentification sans mot de passe, en utilisant uniquement le nom d'utilisateur

est-il possible de configurer Devise pour authentifier sans mot de passe?

Ceci est une application intranet. Afin de vous connecter, vous devriez être sur le VPN en premier lieu, plus l'application permet uniquement de voir l'état des commandes et de l'historique, et non de soumettre des informations. Je suppose que le site Web de suivi de FedEx ou UPS, mais permet à l'utilisateur de voir tout le compte, avec une sécurité supplémentaire d'une boîte VPN que le client obtient de nous.

Maintenant, j'aurais toujours besoin d'un mot de passe, mais il s'agit d'une exigence non négociable sur le projet. Les clients sont utilisés pour ce schéma et ne sont pas très avertis en informatique pour s'adapter rapidement à un changement rapidement.


2 commentaires

Si c'est trop compliqué (et je ne suis pas aussi familier avec le Devise), vous pouvez simplement faire le mot de passe un élément de forme caché.


Slhck, je pourrais. Et je pouvais simplement configurer tous les comptes avec un mot de passe factice et le soumettre dans le champ caché, mais quel est le plaisir dans cela? :-)


3 Réponses :


8
votes

La solution non so-élégante (qui n'a pas besoin de modification de l'intention): utilisez un mot de passe par défaut identique pour tous les utilisateurs

Utilisez un avant_validation Rappel pour définir user.password et user.password_confirmation à une valeur par défaut (par exemple, mot de passe ).

Générer les vues de congise avec Rails Générez Devise: Vues

Modifier le formulaire de connexion pour ajouter un champ de mot de passe caché avec la valeur de votre mot de passe par défaut.

Comme je l'ai dit, pas élégant, mais cela devrait faire l'affaire sans avoir besoin de creuser à l'intérieur des internes.


Solution plus élégante:

Fourche le projet de développement sur GitHub et Adapt https: //github.com/plataformatec/devise/blob/master/lib/devise/strategies/database_authenticatable.rb à vos besoins

Vous pouvez ensuite spécifier votre fourchette dans le gemfile.


4 commentaires

David c'est en fait dans mon commentaire ci-dessus. J'ai considéré cela mais comme vous l'avez dit - pas si élégant :-) Merci de toute façon quand même, au moins, je suis validé, car je ne suis pas le seul à avoir pensé à ça :-)


Mis à jour pour une solution plus élégante :-)


Merci de me diriger dans la bonne direction - je n'ai même pas regardé le code, d'abord à l'aide du congé, ne réalisais pas que ce soit ce simple. Merci.


Hey, je travaille aussi sur le même problème que vous pouvez perdre une lumière quels changements vous apportez (dans le fichier de base de données_authenticatable.rb) pour trouver cette solution plus élégante :)



5
votes

Dans ce cas, je préfère à Monkey-Patch Devise :: Stratégies :: Authenticable CODE> au lieu de FORKING TOUT LE CONSEIL DE DISPOSITION POUR FAIRE UN CHANGEMENT ONE LIGNE.

Devise::Strategies::Authenticatable.class_eval do
  private
    def valid_password?
      true
    end
end


0 commentaires

3
votes

Pas un peu de retard, mais cela peut certainement être fait avec SIGN_IN en incluant Devise :: Contrôleurs :: Aidateurs Si vous n'êtes pas déjà héritée d'un Devisecontroller ou un contrôleur qui hérite de < Code> Devisecontroller (tel que Devise :: SessionsController ). Ensuite, appelez simplement signe_in (utilisateur) : xxx


0 commentaires