每当我注册时,我都会得到未经授权的错误

时间:2020-05-20 11:41:48

标签: node.js express mongoose mongoose-plugins

我用Express和Moongoose并使用本地护照创建了一个node.js应用

我已经在其中声明了一个用于db的admin,它已注册并正常工作,但是我对proctor进行了尝试,它说未授权错误。这是代码

var express         = require("express"),
app                 = express(),
bodyParser          = require("body-parser"),
mongoose            = require("mongoose"),
methodOveride       = require("method-override"),
flash               = require("connect-flash"),
//User              = require("./modles/user"),
Admin               = require("./modles/admin"),
Proctor             = require("./modles/proctor"),
Students            = require("./modles/students"),
async               = require("async"),
nodemailer          = require("nodemailer"),
crypto              = require("crypto"),
passport            = require("passport"),
LocalStrategy       = require("passport-local");

//requireing routes
indexRoutes         = require("./routes/index"),
adminRoutes     = require("./routes/admin"),
proctorRoutes   = require("./routes/proctor"),
studdentRoutes  = require("./routes/students");

mongoose.connect("mongodb://localhost/msrit_clg_interaction");
app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));
app.use(methodOveride("_method"));
app.use(bodyParser.urlencoded({extended: true}));
app.use(flash());

//PASSPORT CONFIGRATION
app.use(require("express-session")({
    secret: "MSRIT INTERACTION",
    resave: false,
    saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(Admin.authenticate()));
passport.serializeUser(Admin.serializeUser());
passport.deserializeUser(Admin.deserializeUser());

passport.use(new LocalStrategy(Proctor.authenticate()));
passport.serializeUser(Proctor.serializeUser());
passport.deserializeUser(Proctor.deserializeUser());

passport.use(new LocalStrategy(Students.authenticate()));
passport.serializeUser(Students.serializeUser());
passport.deserializeUser(Students.deserializeUser());

app.use(function(req, res, next){
    res.locals.currentUser = req.user;
    res.locals.error = req.flash("error");
    res.locals.success = req.flash("success");
    next();
});


app.use(indexRoutes);
app.use("/admin", adminRoutes);
app.use("/proctor", proctorRoutes);
app.use("/students", studdentRoutes);



app.listen(process.env.PORT, process.env.IP, function(){
    console.log("COLLEGE INTERACTION Server has Started!!");
});

这是代理人注册的代码

var express = require("express");
var router  = express.Router();
var passport = require("passport");
//var User = require("../modles/user");
var async = require("async"),
Admin       =   require("../modles/admin"),
Proctor     =   require("../modles/proctor"),
nodemailer          = require("nodemailer"),
crypto              = require("crypto");
//var middleware = require("../middleware");

//root route
router.get("/", function(req, res){
    res.render("Proctor/index");
});

//show register form route
router.get("/procRegister", function(req, res){
    res.render("Proctor/register");
});


//handle signup form
router.post("/procRegister", function(req, res){
    var newUser = new Proctor({
        username: req.body.username,
        firstName: req.body.firstName,
        lastName: req.body.lastName,
        email: req.body.email
    });
    if(req.body.proctorCode === "proctor_code123"){
        Proctor.register(newUser, req.body.password, function(err, user){
            if(err){
                console.log(err);
                return res.render("Proctor/register");
            }
            passport.authenticate("local")(req, res, function(){
                //req.flash("success", "Welcome to YelpCamp "+user.username);
                res.redirect("/proctor");
            });
        });
    }else{
        //req.flash("error", "You are not valid user!");
        res.redirect("/proctor/procRegister");
    }

});

//show login form
router.get("/login", function(req, res){
    res.render("Proctor/login");
});

//handling login logic
router.post("/login", passport.authenticate("local", 
    {
        successRedirect: "/proctor",
        failureRedirect: "/proctor/login"
    }), function(req, res){
});

//logout route
router.get("/logout", function(req, res){
    req.logout();
    //req.flash("success", "Logged out!");
    res.redirect("/");
});

module.exports = router;

这是监理模式

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


var ProctorSChema = new mongoose.Schema({
    firstName: String,
    lastName: String,
    email: {type: String, unique: true, required: true},
    username: {type: String, unique: true, required: true},
    password: String,
    resetPasswordToken: String,
    resetPasswordExpires: Date,
    profilePic: String,
    student: {
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Stud"
        },
        username: String,
    }
});

ProctorSChema.plugin(passportLocalMongoose);

module.exports = mongoose.model("Proc", ProctorSChema);

同样适用于管理员,但现在适用于监理,任何人都无法帮助其开展重要项目

0 个答案:

没有答案