password.js中的“缺少凭据”

问题描述

有人可以帮帮我吗,自4天以来我一直在head头,通过输入时,它会抛出一条错误消息“ Missing Credentials”。 邮递员显示的http状态码为403。

我已经使用护照中间件在网站上注册新用户 使用本地护照策略

我正在分享下面的代码。 任何帮助表示赞赏。谢谢。

//config/passport.js

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);
    });
});

passport.use('local.signup',new LocalStrategy({
    usernameField: 'email',passwordField: 'password',passReqToCallback: true
},function(req,email,password,done){
        req.checkBody('email','Invalid email').notEmpty().isEmail();
        req.checkBody('password','Invalid password').notEmpty().isLength({min:4});
        var errors = req.validationErrors();
            if(errors) {
                var messages = [];
                errors.forEach(function(error){
                    message.push(error.msg);
                });
                return done(null,false,req.flash('error',messages));
            }

        User.findOne({'email': email},user){
            if(err){
                return done(err);
            }
            if(user){
                return done(null,{message: 'Email Id is already in use.'});
            }
            var newUser = new User();
            newUser.email = email;
            newUser.password = newUser.encryptPassword(password);
            newUser.save(function(err,result){
                if(err){
                    return done(err);
                }
                return done(null,newUser);
            });
        });
}));

//models/user.js

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

var userSchema = new Schema({
    email:{type: String,required:true},password:{type: String,required:true}
});

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

userSchema.methods.validPassword = function(password){
    return bcrypt.compareSync(password,this.password);
};

module.exports = mongoose.model('User',userSchema);
// routes/index.js

var express = require('express');
var router = express.Router();
var csrf = require('csurf');
var passport = require('passport');

var Product = require('../models/product');

var csrfProtection = csrf();
router.use(csrfProtection);



/*SIGNUP PAGE*/
router.get('/user/signup',res,next){
    var messages = req.flash('error');
    res.render('user/signup',{csrftoken: req.csrftoken(),messages: messages,hasErrors: messages.length > 0});
});

router.post('/user/signup',passport.authenticate('local.signup',{
    successRedirect: '/user/profile',failureRedirect: '/user/signup',failureFlash: true
}));

/*user profile page */
router.get('/user/profile',next){
    res.render('user/profile');
});

module.exports = router;


//app.js

var express = require('express');
const PORT = 9090;
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var expressHbs = require('express-handlebars');
const Handlebars = require('handlebars')
const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access')
var mongoose = require('mongoose');
var session = require('express-session');
var passport = require('passport');
var flash = require('connect-flash');
var validator = require('express-validator');

var routes = require('./routes/index');

var app = express();


mongoose.connect('mongodb://localhost:27017/shopping',{ useUnifiedTopology: true,useNewUrlParser: true });
require('./config/passport');

//view engine setup
app.engine('.hbs',expressHbs({defaultLayout: 'layout',extname:'.hbs',handlebars: allowInsecurePrototypeAccess(Handlebars)
    })
);
app.set('view engine','.hbs');

// uncomment after placing your favicon in /public
 //app.use(favicon(path.join(_dirname,'public','favicon.ico')));
app.use(logger('dev'));
app.use(express.json());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
app.use(validator());
app.use(cookieParser());
app.use(session({secret: 'mysupersecret',resave: false,saveUninitialized: false}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname,'public')));

app.use('/',routes);


//catch 404 and forward to error handler
app.use(function(req,next){
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

//error handlers

//developement error handler
//will print stackrace
if (app.get('env') === 'development'){
    app.use(function(err,req,next){
        res.status(err.status || 500);
        res.render('error',{
            message: err.message,error: err
        });
    });
}

//Configure the Port:
app.listen(PORT,function(){
    console.log("Application has started and running on PORT number: ",PORT);
}).on('error',function(){
    console.log("Unable to start the app. Error >>>>> ",error);
});
//signup.bhs
<!!-code snippet->
        <form action="/user/signup" method="POST">
            <div class="form-group">
                <label for="email">Email Id</label>
                <input type="text" id="email" name="email" class="form-control">
            </div>
            <div class="form-group">
                <label for="password">Password</label>
                <input type="password" id="password" class="form-control">
            </div>
            <input type="hidden" name="_csrf" value="{{csrftoken}}">
            <button type="submit" class="btn btn-success">Sign Up</button>
        </form>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)