我已经使用类的注册函数创建了一个带有 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");
});
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