如何使用护照本地护照js将用户重定向到快递js上的不同页面?

问题描述 投票:-1回答:2

我正在开发一个有三家公司的项目(即compA,CompB,compC)。每家公司都有自己的用户。这是我的用户架构,用户可以将其与特定公司关联

    const UserSchema = new Schema({
        name:{
            type: String,
            required: true
        },
        company:{
            type: String,
            required: true
        },
        password:{
            type: String,
            required: true
        },
        role:{
            type: String
        }, 
        date:{
            type: Date,
            default: Date.now
        }   
    })

const User = mongoose.model('users', UserSchema)

我唯一关心的是如何根据与之关联的公司将用户重定向到特定页面。

现在我使用此代码作为我的登录,并在连续登录后进入“添加”页面。有没有办法让我可以将特定登录用户重定向到特定页面?

router.post('/login', (req, res, next)=>{

    passport.authenticate('local', {
        successRedirect: '/ideas/add',
        failureRedirect: './login',
        failureFlash: true
    })(req, res, next)
})
node.js express passport.js passport-local
2个回答
0
投票

我认为你的问题有2种方法。

  1. 不使用护照,并在site_config.js中写入重定向网址
site_config['url_base_on_company'] = {'a'=>'www.a.com','b':'www.b.com'};
const site_config = require('site_config');
User.findOne({where,'attributes': ['id','company']}.then(user=>{
    if(!user){
    // redirect relogin page
    //return
    }
    //session
    redirect(site_config[user['company']]);
});
  1. 使用护照并在您的/ideas/add页面中,需要site_config和重定向。但这对db来说并不好。在第一个想法中,你只能访问db一次,但第二个想法应该两次。当然,会话(保存在像redis这样的memery)可能比db更好地获得用户公司。

0
投票

验证码就像

 passport.authenticate('local',function (err, user, info) { 
     if(err){
      res.redirect('/login')
     } else{
      if (! user) {
        res.redirect('/login')
      } else{
        req.login(user, function(err){
          if(err){
            res.redirect('/login')
          }else{

                 if(user.company == 'company1'){
                   res.redirect('url for company1')
                    }
                if(user.company == 'company2'){
                   res.redirect('url for company2')
                    }

          }
        })
      }
     }
  })(req, res);
© www.soinside.com 2019 - 2024. All rights reserved.