2017-02-16 183 views
0

我有2個主頁。一個頁面是在Nodejs中登錄身份驗證

  • mywebsite.com/login

  • mywebsite.com

/登錄頁面顯示登錄名和密碼的頁面。當用戶成功通過身份驗證後,mywebsite.com頁面打開。

mywebsite.com/login去login.js文件服務器上

mywebsite.com/去index.js服務器

我想保持在兩個頁面中的會議文件。如果用戶沒有登錄,我希望mywebsite.com/重定向到/登錄。

我已閱讀關於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 
}); 

我在做什麼錯?我該怎麼做?

+0

以下是關於使用會話中間件的一些基本信息 - http://www.codexpedia.com/node-js/a-very-basic-session-auth-in-node-js-with-express-js/ – metame

+0

可能重複[如何在node.js中實現登錄認證](http://stackoverflow.com/questions/7990890/how-to-implement-login-auth-in-node-js) – metame

回答

0

我建議你使用express-session npm Module來維護會話。 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; 
} 

這應該訣竅

+0

請問req.session.loggedIn login.js中的值也可以在index.js中訪問? – user2498079

+0

當然,它是一個會話變量,它可以在當前會話中的所有函數中訪問。 –

+0

如何重定向到index.ejs文件?我正在嘗試res.redirect('/')。send(response);但它不起作用。響應對象包含的數據將被客戶端js文件使用 – user2498079