我正在构建一个应用程序,该应用程序需要注册和登录用户和组织。我正在使用节点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}
request
req,params.org
isorganisation
true
req.params
添加回答
举报
0/150
提交
取消