问题描述
有人可以帮帮我吗,自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 (将#修改为@)