Pass: Ermöglicht anmelden mit name und E-Mail-Adresse? (Lokale Strategie)
Gibt es eine Möglichkeit, dass ein Benutzer zu registrieren, auf die lokale Strategie mit seinem Passwort, E-Mail und name?
Jedes Beispiel, das ich finden konnte, nur online Benutzername/Passwort oder E-Mail/Passwort.
Ich auch gesucht, durch die die gesamte passport-Dokumentation, aber diese Dokumentation ist nicht hilfreich bei allen. Es ist nur eine aufgeblähte Website voll von Beispielen.
Ich brauche nur eine Liste von Funktionen, Klassen und Variablen Pass verwendet, mit Erklärungen, was Sie und alle parameter von Ihnen. Jede gute Bibliothek hat so etwas, warum kann ich nicht finden, es für den Pass?
Hier sind die wichtigsten Teile meines code:
passport.use('local-signup', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
//are there other options?
//emailField did not seem to do anything
passReqToCallback: true //allows us to pass in the req from our route (lets us check if a user is logged in or not)
},
function(req, email, password, done) {
//check if email not already in database
//create new user using "email" and "password"
//I want an additional parameter here "name"
}));
So ist Pass wirklich so beschränkt? Es muss ein Weg, um dies zu tun, richtig?
- Wieso der downvote?
- Sie würden wahrscheinlich haben, um bauen Sie Ihre eigene Strategie, aber Sie können leicht finden, die bereits integrierte Strategien wie diese github.com/zkochan/passport-email
- Passwort veraltet ist, Sie grundsätzlich bitten, einen Benutzer daran zu erinnern, das 100-Kennwort auf das internet für Ihre Website, und vergessen Sie es das zweite mal Ihre Website besuchen, etwas, was über passportjs oder eine express-auth-middlewares verwenden die gleiche Strategie, die E-Mail/Passwort oder Benutzername/Passwort, die Sie schreiben werden, mehr aufgeblähten codes einfach zu handhaben, die login/err login/Passwort vergessen-api. Entweder FB/Google-auth-api oder Sie können github.com/florianheinemann/passwordless
- Nein. Ich werde auf jeden Fall nicht erzwingen, dass meine Nutzer haben ein facebook/google/twitter oder was auch immer-account.
- Es hängt davon ab, wer der Benutzer ist, und der Ort, in dem die app verwendet wird. Ich bezweifle, dass jeder Benutzer öffnen Sie ein ticket für Sie, wenn Sie lassen Sie Google oder Facebook oder Twitter. Mit dieser sagte, mit einem Benutzername-cum-option password on standby wird helfen, diejenigen, die nicht müde von der Eingabe Ihrer Daten. Its a free world
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ein wenig verwirrt, aber Pass nicht umsetzen signup Methoden. Es ist nur Genehmigung der Bibliothek. So müssen Sie verarbeiten, dass use-case auf Ihrem eigenen.
Zunächst, route erstellen, die verantwortlich für die sign-up und Ihren Kontrollen:
Beispiel oben basiert auf Segel-framework, aber Sie passen ohne Probleme auf Ihren eigenen Fall.
Nächste Schritt ist, gehören Pass lokalen Strategie.
Wir haben nur signin Aufgabe jetzt. Es ist ganz einfach.
Dieser Weg ist eher geeignet für Pass-und funktioniert großartig für mich.
Hier ist was für mich gearbeitet, die Lösung basiert auf einem Mungo basiert odm, der erste Teil ist die passport-bezogenen Teil, den ich auch an den Benutzer als Teil von odm, um zu zeigen, wie sich die Verschlüsselung des Passworts erfolgt.
Wenn ich deine Frage verstanden, du willst den Benutzer zur Eingabe entweder seine E-Mail oder Passwort. In diesem Fall ändern Sie die Suche, um zu versuchen beide, das ist, übereinstimmung der bereitgestellten Benutzer-id (in Ihrem Aufruf von findOne(...) entweder mit dem Benutzernamen oder Passwort.
Hinweis, dass ich bcrypt zu vermeiden, speichern Passwörter löschen, das ist, warum es ist eine angepasste compare-Methode für das testen von Passwörtern. Beachten Sie auch 'Tipps' mit google auth als auch, Mein system aktiviert, wenn es relevant ist, bitte laß mich wissen, und ich kann hinzufügen, den erforderlichen code.
------------ Auth-Teil (nur relevante snippets) -----------
--- Benutzer - /odm-relevanten Teile ----------------
Das hat nichts zu tun mit
passport
und ist ziemlich einfach, vorausgesetzt, Sie verwendenbody-parser
. Stellen Sie sicher, Sie haben eineinput field
im Formular mit dem Attributname="name"
wo Sie registrieren den Namen des Benutzers wie:In Ihre routing, können Sie auf dieses Feld mit
req.body.name
:So können Sie hinzufügen, wie viele Formular-Eingabe-Felder, wie Sie möchten, auf Sie zugreifen, indem Sie den Wert des name-Attributs. Ein Zweites Beispiel wäre: