jaredhanson / passport

Simple, unobtrusive authentication for Node.js.
https://www.passportjs.org?utm_source=github&utm_medium=referral&utm_campaign=passport&utm_content=about
MIT License
22.93k stars 1.24k forks source link

bad request while authenticating #679

Closed Kudratov closed 5 years ago

Kudratov commented 6 years ago

In my create ejs, there are 14 inputs that are required in jQuery(main.js) and I think the main problem is in the backend logic. In the create.ejs, there is form the method is post and the action is "/credit" user.js


var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");

var UserSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true
    },
    password: {
        type: String
    },
        fName: {
        type: String
    },
    mName: {
        type: String
    },
    lName: {
        type: String
    },
    strPass: {
        type: String
    },
    intPass: {
        type: String
    },
    regPlace: {
        type: String
    },
    citPlace: {
        type: String
    },
    fullAdr: {
        type: String
    },
    innCode: {
        type: String
    },
    salry: {
        type: String
    },
    workPlc: {
        type: String
    },
    phoneNum: {
        type: String
    },
    userCreditType: {
        type: String
    },
    userCred: {
        type: String
    },
    creditReason: {
        type: String
    },
});

UserSchema.plugin(passportLocalMongoose);

module.exports = mongoose.model("User", UserSchema);

app.js

var express = require("express"),
    app = express(),
    bodyParser = require("body-parser"),
    expressSanitizer = require("express-sanitizer"),
    mongoose = require("mongoose"),
    passport = require("passport"),
    LocalStrategy = require("passport-local"),
    methodOverride = require("method-override");

var creditRoute = require("./routes/credit"),
    User = require("./models/user");

mongoose.connect("mongodb://localhost/Bmodel_v7");
// "mongodb://***:***@ds261929.mlab.com:61929/bmodel" || 

app.use(bodyParser.urlencoded({extended: true}));

app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));
app.use(methodOverride("_method"));
app.use(expressSanitizer());

app.use(require("express-session")({
    secret: "I don't like Banks",
    resave: false,
    saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(creditRoute);

app.listen((process.env.PORT || 3000), process.env.IP, function(){
    console.log("Server has started!!!");
});

credit.js

var express = require("express"),
    router = express.Router(),
    passport = require("passport"),
    Credit = require("../models/credDb"),
    User = require("../models/user");

router.get("/", function(req, res){
    res.redirect("/credit");
});

router.get("/credit", function(req, res){
    res.render("create");
});

router.post("/credit", function(req, res){  
    var password = req.body.user.strPass + req.body.user.intPass;
    var username = req.body.user.innCode;

    console.log(username);

    var newUser = new User({username: username});

    User.register(newUser, password, function(err, user){
        if(err){
            console.log(err + "====here=======");
            return res.render("create");
        }
        passport.authenticate("local")(req, res, function(){
        var newValue = req.body.user;
        console.log("==11==");
        res.redirect("/credit/" + user.id);
        var new_User = new User();

        });
    });
});
router.get("/credit/:id", function(req, res){
    res.send("Target");
});
module.exports = router;
ghost commented 6 years ago

You need to find out which line contains the error using DEBUG.