我在这里使用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 但我没有正确理解他的意图