Nodejs中的登录身份验证 [英] Login authentication in Nodejs

查看:95
本文介绍了Nodejs中的登录身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 2 个主页.一页是

I have 2 main pages. One page is

  • mywebsite.com/login

  • mywebsite.com/login

mywebsite.com

mywebsite.com

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

/login page shows login and password page. When the user successfully gets authenticated, the mywebsite.com page opens.

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

mywebsite.com/login goes to login.js file on server

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

mywebsite.com/ goes to index.js file on the server

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

I want to maintain a session across both page. If the user isn't loggedin, I want the mywebsite.com/ to redirect to /login.

我已经阅读了 req.session,但我不知道如何知道 index.js 中 login.js 的 req.session 值.

I have read about req.session but I don't know how to know about req.session value of login.js inside index.js.

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
});

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

What am I doing wrong? How can I do it?

推荐答案

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

I suggest you use the express-session npm Module to maintain sessions. https://www.npmjs.com/package/express-session

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

You need to include it in your 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;
}

这应该可以解决问题

这篇关于Nodejs中的登录身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆