我用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);
同样适用于管理员,但现在适用于监理,任何人都无法帮助其开展重要项目