簡體   English   中英

NodeJS護照未知身份驗證策略

[英]NodeJS passport unknown authentication strategy

我目前正在使用護照認證進行Node js項目。 但是我收到以下錯誤消息:

錯誤:“未知身份驗證策略”

這是我的代碼:

LocalStrategy = require('passport-local').Strategy;
var UserModel = require('../models/user');

module.exports = function(passport){
passport.serializeUser(function(user, done){
    done(null, user.id);
});
passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user){
        return done(err, user);
    });
});

passport.use('local-signup', new LocalStrategy({
    passReqToCallback: true
}, function(req, username, password, done){
    process.nextTick(function(){
        User.findOne({username: username}, function(err, user) {
            if(err){
                return done(err);
            }

            if(user){
                return done(null, false, req.flash('signUpErr', 'The mail is taken'));
            } else {
                var newUser = new UserModel();
                newUser.name = username;
                newUser.password = newUser.generateHash(password);

                newUser.save(function(err){
                    if(err){
                        throw err;
                    }
                    console.log('All Ok');
                    return done(null, newUser);
                })
            }
        });
    });
}));

}

路線:

//Post requests
app.post('/signup', passport.authenticate('local-signup', {
    successRedirect: '/',
    failureRedirect : '/signup'
}));

我的模特:

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

var UserSchema = new mongoose.Schema({
    name: String,
    password: String
});

UserSchema.method.generateHash = function(password){
    return bcrypt.hash(password);
};
module.exports = mongoose.model('UserModel', UserSchema);

我真的需要您的幫助,謝謝!

檢查您是否通過了策略以及用戶憑證

 var credentials = {
     username:"username",
     password:"password",
     strategy:"local"

            };
 $http.post('auth/signin', credentials);

服務器端

function passportAuthenticate(req, res, next, strategy) {
    passport.authenticate(strategy, function(err, user, info) {
        if (err || !user) {
            res.status(400).send(info);
        } else  {
            next(req, res, user);
        }
    })(req, res, next);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM