无法在expressejs(ejs)中存储会话

时间:2017-10-11 06:47:52

标签: angularjs node.js express ejs

我使用Mysql,ejs模板和angular技术。在这里我用session登录,但没有任何东西存储在其中 这是app.js文件

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

app.set('view engine', 'ejs');
app.use(express.static('views'));
app.use(express.static(__dirname + '/views/views'));
app.use(cookieParser());
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended': 'true'}));
//app.use(session({secret: 'keyboard cat', key: 'sid'}));

app.use(session({
    cookieName: 'session',
    secret: 'random_string_goes_here',
    duration: 30 * 60 * 1000,
    activeDuration: 5 * 60 * 1000,
}));

app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());
app.use(bodyParser.json({type: 'application/vnd.api+json'}));
app.use(methodOverride());


这是登录表格帖子

app.post('/userlogins', function (req, res, next) {
    var pass = sha1(req.body.password);
    var email = req.body.email;
    var password = pass;
    connection.query('SELECT email,password FROM register where email = "' + email + '" and password = "' + password + '" ', function (err, rows) {

        // console.log(query.sql);
        if (err) {
            throw err();
            var errornya = ("Error Selecting : %s ", err.code);
            console.log(err.code);
            req.flash('msg_error', errornya);
            res.redirect('/login');
        } else {
            // console.log('the record inserted:', result);
            if (rows.length <= 0)
            {
                message: 'Invalid password'
                res.redirect('/userlogins');
            } else {
                if (rows.length <= 0)
                {
                    message: 'Invalid password'
                    res.redirect('/userlogins');
                } else
                {
                    //req.session.user = user;
                    console.log(req.session);      //getting empty value. 
                    message: 'successfully logged In!'
                    res.redirect('/dashboard');
                }
            }
        }
    });
    // console.log(query.sql);
});

1 个答案:

答案 0 :(得分:0)

您可以在节点应用程序中使用Small Singleton类,然后在整个应用程序中使用它。

'use strict';
let nodeCache = require('node-cache'); // i am using this as i want the details to auto expire too . 

let myCache = new nodeCache({stdTTL: 86400, checkperiod: 120});

module.exports = {
  get: (key) => myCache.get(key),
  set: (key, value) => myCache.set(key, value)
};

像这样使用

const cache = require('../cache');
cache.set(userData.id, userData); // dummy key and value
cache.get(ctx.get('<your key>'));
相关问题