繁体   English   中英

Node.js中的登录身份验证

[英]Login authentication in Nodejs

我有2个主要页面。 一页是

  • mywebsite.com/login

  • mywebsite.com

/ login页面显示登录名和密码页面。 成功验证用户身份后,将打开mywebsite.com页面。

mywebsite.com/login转到服务器上的login.js文件

mywebsite.com/转到服务器上的index.js文件

我想在两个页面上都保持会话。 如果用户未登录,我希望mywebsite.com/重定向到/ login。

我已经阅读了有关req.session的信息,但是我不知道如何了解index.js中login.js的req.session值。

app.js

var login = require('./routes/login');
var routes = require('./routes/index');

var app = express();

app.use('/login', login);
app.use('/', routes);


// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

login.js

router.get('/', function(req, res, next) {
  res.render('login', { title: 'Login' });
});

router.post('/isEmployeeAdmin', function(req, res, next) {
  console.log("req is: ", req.body);
  employeeController.isEmployeeAdmin(req.body, function (response, data) {
    response.data = data;
    if (!response.success) {
      console.error("error is: ", response.message);
      res.status(200).send(response);
      return;
    }

    res.status(200).send(response);
    console.log("success in finding if employee is admin ", response.data);
  });
});

index.js

router.get('/', function(req, res, next) {

    if(req.session.loggedIn)
          res.render('index', { title: 'WinGoku' });
    else
        res.status(404).send(); // or redirect to login.ejs file
});

我究竟做错了什么? 我该怎么做?

我建议您使用express-session npm模块来维护会话。 https://www.npmjs.com/package/express-session

您需要将其包含在您的app.js中

var session = require('express-session');

给它一个秘密钥匙

app.use(session({secret: 'anystringhere'}));

并稍微更改此代码

if (!response.success) {
      console.error("error is: ", response.message);
      res.status(200).send(response);
      return;
    }
else{
   req.session.loggedIn = true;
}

这应该可以解决问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM