我有2个主页。一页是
mywebsite.com/login
mywebsite.com
/登录页面显示登录名和密码页。当用户成功通过身份验证后,将打开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
});
我做错了什么?我该怎么办?
答案 0 :(得分:0)
我建议您使用快速会话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;
}
这应该可以解决问题