如何在我的应用程序中使用nodejs和Passport进行两次不同的登录?

时间:2018-12-17 14:40:20

标签: node.js mongodb mongoose passport.js

我在这里使用mongodb,猫鼬,快递,护照(及其依赖项)!

基本上,我有一个适用于“用户”模型的功能性登录名,并且我想创建另一个适用于“雇员”模型的登录名。问题是,当我尝试创建“员工”登录名和身份验证时,我复制了为“用户”所做的操作,但是没有用。该应用程序无法识别有员工登录,就像我用用户登录时一样。 当我在登录员工后对console.log进行身份验证时,它说是错误的,这意味着没有人登录。。。我可以很好地注册用户和员工,问题主要出在登录后,用户登录可以正常工作,而员工登录则不能。

我不想创建其他角色,我想创建两个不同的登录名。

我正在使用以下模型:

针对用户

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

    var UserSchema = new mongoose.Schema({
        username:String,
        password:String,
        isAdmin: {type:Boolean, default:false}
    })

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

此为员工

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


    var EmployeeSchema = new mongoose.Schema({
        username:String,
        password:String,
        firstname:String,
        lastname:String,
        birth:String,
        adress:String,
        role:String,
        education:String,
        experience:String

    })

EmployeeSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("Employee", EmployeeSchema);

这是我在主要app.js(指护照配置和登录路线的部分)中使用的代码。用户和员工的注册路由都工作正常。 某种程度上,我觉得问题出在这部分,尽管我不知道这是否就是我编写此代码的方式。

 **//PASSPORT CONFIGURATION**
    app.use(require("express-session")({
        secret: "secret",
        resave: false,
        saveUninitialized:false
    }));
    app.use(passport.initialize());
    app.use(passport.session());
    passport.use('user',new LocalStrategy(User.authenticate()));
    passport.serializeUser(User.serializeUser());
    passport.deserializeUser(User.deserializeUser());
    passport.use('employee',new LocalStrategy(Employee.authenticate()));
    passport.serializeUser(Employee.serializeUser());
    passport.deserializeUser(Employee.deserializeUser());

这是用户登录

的发布路线
     app.post("/login", passport.authenticate("user",{successRedirect:"/",failureRedirect:"/login"}),function(req,res){
 })

这是员工登录名

的发帖路线
app.post("/employeelogin", passport.authenticate("employee",{successRedirect:"/",failureRedirect:"/employeelogin"}),function(req,res){
})

很抱歉,如果这太长了,我们将不胜感激!我已经使用了3天了,请通过console.logs尝试解决这个问题,但是我还没有找到解决方法。 谢谢您的关注!

PS:我在这里看到了这个话题:two different login with node-passport 但我没有正确理解他的意图

0 个答案:

没有答案