在我的数据库中成功注册数据后,护照身份验证在node.js中显示未经授权?

问题描述 投票:0回答:1

我已经使用类的注册函数创建了一个带有 docSchema 注册的注册路由。 现在的问题是,在前端注册时,它不会抛出任何错误,而是将数据注册到我的数据库中,但不会重定向到登录路由。相反,它会抛出未经授权的 401 错误,并且我的登录路线在使用正确的详细信息登录后显示相同的错误。奇怪的是,确切的代码之前可以正常运行,没有任何问题。请帮我解决这个问题。

const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");

const mongoose = require("mongoose");
const session = require("express-session");
const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");


const app = express()

app.use(express.static("public"));
app.set("view engine","ejs");
app.use(bodyParser.urlencoded({
    extended: true
}));

// ----- User Session ------
app.use(session({
    secret: "anthonymnoasisaidp@$gdhdks.",
    resave: false,
    saveUninitialized: false
}))
// --------------------------

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

//------- Connecting MongoDB --------
mongoose.connect("mongodb://127.0.0.1/Doctors", {useNewUrlParser: true});
const docSchema = new mongoose.Schema({
    name: String,
    age: String,
    qualifications: String,
    exp: String,
    email: String,
    password: String

});

const patSchema = new mongoose.Schema({
    name: String,
    age: String,
    sex: String,
    bpm: Object,
    medicines: Object,
    past_rec: String,
    ecg_analysis: Object

});


patSchema.plugin(passportLocalMongoose);

docSchema.plugin(passportLocalMongoose);

//--------doctor credentials collection---------------------

const doc = new mongoose.model("doctor_cred", docSchema);
passport.use(doc.createStrategy());

passport.serializeUser(doc.serializeUser());
passport.deserializeUser(doc.deserializeUser());

//------------------------------------------------------------

//------------patient collection details----------------------

const pat = new mongoose.model("patient_cred", patSchema);
passport.use(pat.createStrategy());

passport.serializeUser(pat.serializeUser());
passport.deserializeUser(pat.deserializeUser());

//------------------------------------------------------------







// ------Home Route---------

app.get("/",function(req,res){
    res.render("index");
});

// ------ end ----------------

// ---------- Login Route -----

app.get('/login',function(req,res){
    res.render("login");
})

app.post('/login',function(req,res){
    const user = new doc({
        username: req.body.username,
        password: req.body.password
    })

    req.login(user, function(err){
        if(err){
            console.log(err);
        }
        else{
            passport.authenticate("local")(req,res, function(){
                res.redirect('/doctor-dashboard');
            });
        }
    })
})
//--------end------------------

//------Register Route/ Doctors----------
app.get('/register',function(req,res){
    res.render("register");
})

app.post('/register',function(req,res){

    doc.register({username: req.body.username,name: req.body.name ,age: req.body.age ,qualifications: req.body.qualifications ,exp: req.body.exp}, req.body.password, function(err){
        if (err){
            console.log(err);
            res.redirect("/register");
        }
        else{
            passport.authenticate("local")(req,res, function(){
                res.redirect("/login");
            });
        }
    })

})
//---------end-------------------------

//------------doctor dashboard---------
app.get('/doctor-dashboard',function(req,res){
    doc.findById(req.user.id)
                .then(function(userfound){
                    if(userfound){
                        const name =userfound.name;
                        const age = userfound.age;
                        const qualifications = userfound.qualifications;
                        const exp = userfound.exp;
                        res.render('docdash', {name: name, age: age, qualifications: qualifications, exp: exp});

                    }

                });
})

//--------------------------------------

//--------------doctor dashboard My Patients Route-----------
// app.get('/doctor-dashboard/My-Patients',function(req,res){
    

// });





app.get("/services",function(req,res){
    res.render("services");
});

app.listen("5000",function(){
    console.log("listening on port 5000");
});

node.js mongodb express mongoose passport.js
1个回答
0
投票
const userSchema = new mongoose.Schema({
    username: String,
    password: String,
    name: String,
    age: String,
    qualifications: String,
    exp: String
});

userSchema.plugin(passportLocalMongoose);

const User = mongoose.model("User", userSchema);
passport.use(User.createStrategy());

passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
------------
app.post('/register', function (req, res) {
    const newUser = new User({
        username: req.body.username,
        name: req.body.name,
        age: req.body.age,
        qualifications: req.body.qualifications,
        exp: req.body.exp
    });

    User.register(newUser, req.body.password, function (err) {
        if (err) {
            console.log(err);
            res.redirect("/register");
        } else {
            passport.authenticate("local")(req, res, function () {
                res.redirect("/login");
            });
        }
    });
});
 combine both
© www.soinside.com 2019 - 2024. All rights reserved.