为了账号安全,请及时绑定邮箱和手机立即绑定

创建用户登录并以组织 mongodb 身份登录

创建用户登录并以组织 mongodb 身份登录

回首忆惘然 2022-09-23 10:05:11
我正在构建一个应用程序,该应用程序需要注册和登录用户和组织。我正在使用节点js护照 - 相同的本地策略。我已经创建了所有视图,并与用户一起登录以工作,但是当我复制登录代码作为组织时,我收到意外的错误或被重定向到任何其他视图。这是我的应用程序.js文件// Passport Configrequire('./config/Orgpassport')(Orgpassport);require('./config/passport')(passport);// Express sessionapp.use(  session({    secret: 'secret',    resave: true,    saveUninitialized: true  }));// Passport middlewareapp.use(passport.initialize());app.use(passport.session());// Connect flashapp.use(flash());这是我的护照.js文件const LocalStrategy = require('passport-local').Strategy;const bcrypt = require('bcryptjs');// Load User modelconst User = require('../models/User');module.exports = function(passport) {  passport.use(    new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {      console.log(passport);      // Match user      User.findOne({        email: email      }).then(user => {        if (!user) {          return done(null, false, { message: 'That email is not registered' });        }        // Match password        bcrypt.compare(password, user.password, (err, isMatch) => {          if (err) throw err;          if (isMatch) {            return done(null, user);          } else {            return done(null, false, { message: 'Password incorrect' });          }        });      });    })  );  passport.serializeUser(function(user, done) {    done(null, user.id);  });  passport.deserializeUser(function(id, done) {    User.findById(id, function(err, user) {      done(err, user);    });  });};这是我对登录表单的帖子请求。router.post('/Orglogin', (req, res, next) => {  passport.authenticate('local', {    successRedirect: '/Orgdashboard',    failureRedirect: '/org/Orglogin',    failureFlash: true  })(req, res, next);});我能够使用用户登录,但不能使用组织登录?
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

从您的前端添加一个例如,以便在您的后端您将能够识别该请求是针对组织的,然后在您的组织架构中添加一个像这样的布尔值,这将使您识别尝试登录的用户是否来自组织, 接下来在你的护照本地策略在这一行添加这个新的这将允许你得到,然后你可以用它来实现逻辑,使用你之前设置的参数并检查它是否存在,如果它存在,然后验证用户是否在数据库中,并检查是否设置为如果是, 验证用户正常,否则如果不包含组织,则意味着它不是来自组织,那么您以这种方式使用普通用户验证,您不需要使用2个本地策略,并且可以在此方案中使用两个不同的模型param"org""isorganisation=true"LocalStrategy({ usernameField: 'email' ,passReqToCallback:true}requestreq,params.orgisorganisationtruereq.params



查看完整回答
反对 回复 2022-09-23
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信