2017-11-23 1 views
1

ich neue Benutzer von Anmeldeseite durch Hilfe von passport.js Anmelden Formular hinzufügen möchten folgtRegister Benutzer durch die Pass Js

<form id="Signup-form" name="SignupForm" action="/signup" method="post"/> 
<input type="text" id="firstname" name="Firstname" > 
<input type="text" id="lastname" name="Lastname"/> 
<input type="email" name="email" /> 
<input type="text" id="rollno" name="rollno"/> 
<input type="password" name="password" id="password"/> 
<input type="password" name="confirm" id="confirm-password"/> 
<input type="radio" name='Gender' value="Male" /> 
<input type="radio" name='Gender' value="FeMale" /> 
</form> 

meinen Pass in app.js als

initialisiert

erforderlich

var passport = require('passport'); 
var LocalStrategy = require('passport-local').Strategy; 

nach db Einstellung

require('./config/passport'); 

intialized als

app.use(passport.initialize()); 
app.use(passport.session()); 

Post anmelden Route

router.post('/signup', passport.authenticate('local.signup' , { 
successRedirect : '/home', 
failuerRedirect : '/signup', 
failuerFlash: true 
})); 

mein Benutzermodell

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var bcrypt = require('bcrypt-nodejs') 

const UserSchema = new Schema({ 
First_Name : String, 
Last_Name : String, 
email : String, 
Roll_No : String, 
Gender : String, 
password : String 
},{collection : 'Users'}); 

UserSchema.methods.encryptPassword = function(password) { 
return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null); 
}; 

UserSchema.methods.validPassword = function(password) { 
return bcrypt.compareSync(password, this.password); 
} 
var User = mongoose.model('User' , UserSchema); 
module.exports = User; 

jetzt meine passport.js Datei in Konfigurationsverzeichnis ist

var passport = require('passport'); 
var User = require('../models/user'); 
var LocalStrategy = require('passport-local').Strategy; 
passport.serializeUser(function (user, done) { 
done(null, user.id); 
}); 

passport.deserializeUser(function (id, done) { 
User.findById(id, function (err, user) { 
done(err, user); 
}); 
}); 

meine wichtigsten Fragen, wie mit allen Feldern

passport.use('local.signup', new LocalStrategy({ 
//strategy code here 
})); 

Antwort

1

Hier ist ein gutes Beispiel Easy Node Authentication: Setup and Local

passport.use('local-signup', new LocalStrategy({ 
     // by default, local strategy uses username and password, we will override with email 
     usernameField : 'email', 
     passwordField : 'password', 
     passReqToCallback : true // allows us to pass back the entire request to the callback 
    }, 
    function(req, email, password, done) { 

     // find a user whose email is the same as the forms email 
     // we are checking to see if the user trying to login already exists 
     User.findOne({ 'local.email' : email }, function(err, user) { 
      // if there are any errors, return the error 
      if (err) 
       return done(err); 

      // check to see if theres already a user with that email 
      if (user) { 
       return done(null, false, req.flash('signupMessage', 'That email is already taken.')); 
      } else { 

       // if there is no user with that email 
       // create the user 
       var newUser   = new User(); 

       // set the user's local credentials 
       newUser.local.email = email; 
       newUser.local.password = newUser.generateHash(password); 

       // save the user 
       newUser.save(function(err) { 
        if (err) 
         throw err; 
        return done(null, newUser); 
       }); 
      } 

    })); 
+0

kann u Strategie für diese Strecke schreiben Bitte helfen Sie mir dafür 1 –

+0

Mate dies ist Ihre Antwort Sie müssen nur 5 Zeilen Code ändern. Ich gab dir 90%, du musst nur die 10% machen. Wenn Sie nicht verstehen, was der Code tut (was übrigens einfach ist), sollten Sie vielleicht lesen, wie Express-Middleware und Pass funktioniert – Stamos