有两个角色可以使用nodejs和mongodb登录

时间:2016-07-01 04:20:42

标签: node.js mongodb express mongoose

我想使用由管理员和用户组成的两个不同角色登录。登录后,他们将重定向到自己的页面。有人可以帮帮我吗?我不知道。

我的模型文件

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

 var UserSchema = new mongoose.Schema({
  username: String,
  password: String
});

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

我的app.js文件

 var express = require('express'),
 app = express(),
 mongoose = require('mongoose'),
 passport = require("passport"),
 bodyParser = require("body-parser"),
 User = require("./models/user"),
 LocalStrategy = require("passport-local"),
 passportLocalMongoose = require("passport-local-mongoose");  //libraries

 mongoose.connect("mongodb://localhost/test");  //connect to mongodb test
app.set('view engine', 'ejs'); //using engine of ejs file
app.use(bodyParser.urlencoded({extended: true}));
app.use(require("express-session")({
secret: "wah wah wah",
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());

// LOGIN for user
// render login form
app.get("/", function(req, res) {
res.render("login"); 
});

//login for user
//middleware
app.post("/login", passport.authenticate("local", {
successRedirect: "http://localhost:8082/viewImage.html",
failureRedirect: "http://localhost:8081/error" 
}), function(req, res) {

});


//sign up page
app.get("/register", function(req, res) {
 res.render("register");
});

// register post
app.post("/register", function(req,res){
User.register(new User({username: req.body.username}), req.body.password,     function(err, user){
    if(err){
        console.log(err);
        return res.render('register');
    }
    passport.authenticate("local")(req, res, function(){
       res.redirect("/success"); 
    });
});
});

app.listen(8081, function () {
console.log('ImageViewer listening on port 8081!');
});

1 个答案:

答案 0 :(得分:0)

首先,您必须在架构中添加角色字段。在通过注册创建用户时,也要添加他们的角色。然后根据用户角色将它们重定向到页面。