【发布时间】:2018-03-24 02:32:25
【问题描述】:
我正在实现一个简单的登录功能并将数据存储在快速会话中,但无法取回。 在登录函数的 loginDb.js 文件中,我将 userId 存储在会话变量中,而在 getLoginStatus 函数中,我试图访问 userId,但它返回为未定义。
我浏览过许多与类似问题相关的帖子,但对我的情况没有任何帮助。不知道我在这里做错了什么。下面是代码。
server.js
var express = require('express');
var pg = require('pg');
var cookieParser = require('cookie-parser');
var bodyparser = require('body-parser');
var session = require('express-session');
var path = require('path');
const port = 3000;
const loginroute = require('./Routes/login');
var app=express();
app.use(bodyparser.json());
app.use(bodyparser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
secret: 'This is a secret',
resave: true,
saveUninitialized:true,
cookie: {
secure: false,
maxAge: 60000
}
}));
//Routes
app.use('/api/loginroute',loginroute);
app.listen(port,function(){
console.log('app listening to port:'+port);
});
login.js
const express = require('express');
const router = express.Router();
const db = require('../DataAccessLayer/loginDb');
router.get('/getLoginStatus', db.getLoginStatus);
router.post('/login', db.login);
module.exports = router;
loginDb.js
var config = require('../Config/config');
var session = require('express-session');
var pg = require('pg');
var pool = new pg.Pool(config.development.db);
function getLoginStatus(req, res, next){
var userId = req.session.userId;
};
function login(req, res, next) {
pool.connect(function(err, client, done) {
if (err) {
console.log("not able to get connection "+ err);
res.status(400).send(err);
}
var q = "select id from nodetest.users where name=$1 and password=$2";
client.query(q, [req.body.username, req.body.password], function(err, result) {
done();
if(err) {
return console.error('error running query', err);
}
if(result.rowCount>0){
req.session.userId = result.rows[0].id;
}
res.send(result.rows);
});
});
};
module.exports = {
login:login,
getLoginStatus:getLoginStatus
};
【问题讨论】:
-
你怎么称呼
/getLoginStatus? -
我从 angular 4 http get 方法从服务中调用,我的 url 类似于 localhost:3000/api/loginroute/getLoginStatus
-
在这种情况下,请确保已将其配置为随请求一起发送凭据。
-
你能帮我吗?我不太确定
-
说实话,我不知道如何在 Angular 4 上启用它。
标签: node.js session express express-session