在Node.js和Handbars中管理多个会话

时间:2018-07-05 11:21:04

标签: node.js session handlebars.js passport.js passport-local

我在nodejs中是菜鸟,我试图在express-nodejs和handlebar中整合2种类型的登录和注册,一种针对用户,另一种针对购物者,但是我无法根据会话更改我的nav菜单。

因为默认会话存储在req.user中,所以我需要另一个变量来存储我的店主会话详细信息。因为我试图像这样在序列化和反序列化中更改细节,所以

passport.serializeShopper(function (shopper, done) {
done(null, shopper.id);
});

passport.deserializeShopper(function (id, done) {
Shopper.getShopperById(id, function (err, shopper) {
    done(err, shopper);
})
});

,然后在app.js文件的全局变量部分中更改这些详细信息

// Global Vars
app.use(function (req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
res.locals.user = req.user || null;
res.locals.shopper= req.shopper || null;
next();
});

但是当我尝试console.log(req.shopper);我没有任何价值。如何根据我的用户类型进行不同的会话。另外,由于现在我正尝试使用此代码,因此如何将其包括在车把模板前端中

<ul class="nav navbar-nav navbar-right">
            <li ><a href="#about" style="color:white;">ABOUT</a></li>
            <li  ><a href="#download" style="color:white">DOWNLOAD</a></li>
            <li ><a href="#contact" style="color:white">CONTACT</a></li>
            {{#if user || shopper }}
                <li data-toggle="modal" data-target="#login"> 
  <ahref="/users/logout"><span class="glyphicon glyphicon-log-in" 
  style="color:white"></span> LOGOUT</a></li>
            {{else}}
                <li data-toggle="modal" data-target="#signup"><a 
 href="/users/register" style="color:white"><span class="glyphicon glyphicon- 
 user" style="color:white"></span>USER SIGN UP</a></li>
                <li data-toggle="modal" data-target="#signup"><a 
 href="/shopper/register" style="color:white"><span class="glyphicon 
 glyphicon-user" style="color:white"></span>SHOPPER SIGN UP</a></li>
                <li data-toggle="modal" data-target="#login" ><a 
 href="/users/login" style="color:white"><span class="glyphicon glyphicon- 
 log-in" style="color:white"></span> USER LOGIN</a></li>
                <li data-toggle="modal" data-target="#login"><a 
 href="/shopper/login" style="color:white"><span class="glyphicon 
 glyphicon-log-in" style="color:white"></span> SHOPPER LOGIN</a></li>
            {{/if}}
        </ul>

如果有人可以帮助我,这将很有帮助,我在手把方面的知识也不多,因此我可能在那里也缺少一些东西。 预先感谢。

0 个答案:

没有答案