这种快速会话身份验证方法安全吗?

时间:2018-11-10 12:58:47

标签: node.js express authentication

不确定此express-session auth方法是否安全。我使用bcryptjs加密密码,加密后在req.session.isLoggedIn = true中设置admin.js,随后使用if语句在events.js中对其进行检查。 events.js中的if语句方法安全吗?有更好的选择吗? 我正在使用把手来渲染网页。

admin.js

bcrypt.compare(pass, user.password).then((doMatch) => {
    console.log(doMatch);
    //Check if password match
    if (doMatch) {
      //setting the isLoggedIn value
      req.session.isLoggedIn = true;
      //Events is the route that requires authentication
      return res.redirect('/events');
    } else {
      res.redirect('/');
    }
  }).catch((err) => {
    console.log(err);
  });

events.js

Router.get('/', (req, res) => {
//Checking the if the loggedIn value is true
if (req.session.isLoggedIn) {
Event.find({}, (err, events) => {
  res.render('events', {
    prods: events,
    pageTitle: 'Events',
    path: '/events',
    hasProducts: events.length > 0
  });
}).catch((err) => {
  console.log(err);
});
} else {
  console.log('User not authenticated');
  res.status(404).send({error: 'not authorized!'});
}

});

1 个答案:

答案 0 :(得分:0)

我认为这不是您应该查看的最佳方法:http://www.passportjs.org/

他们有关于身份验证策略和注册的良好文档,还有许多其他方法(Facebook登录,Twitter ...),还有许多关于如何实现Passport.js的教程

希望它对您有帮助!