【问题标题】:session undefined in nodejs with express and mysql使用express和mysql在nodejs中未定义会话
【发布时间】:2016-04-27 15:32:17
【问题描述】:

我使用的是 express、node.js 和 mysql,这是我的代码

var bodyParser = require("body-parser"); 
var bcrypt = require('bcrypt'); 
var urlEncodedParser = bodyParser.urlencoded({extended: false}); 
var session = require('client-sessions'); 
var express = require('express'); 
var app = express();

//mysql

var mysql = require("mysql");


app.post('/login', function(request, response){
    var body = request.body;        
    connection.query("select * from registeration where username='"+body.username+"' and password='"+body.pwd+"'",function(err, rows){
        if(err) { 
            console.log("username and password are not matched.");      
            response.end();
        } else {
            console.log("done");
            response.send(rows);
            request.usersession.user = user;        
            response.redirect(301, '/account');
        }   
    });

});

app.get('/account', function (request, response){       
    if(request.usersession && request.usersession.user) {          
        response.Send({requ: request.usersession.user});

        response.write('user detail ' + request.usersession.user[0]['username']);
        console.log('account in');
    }else{
        console.log('session error');
        response.end();
    }
});

【问题讨论】:

  • 您能否发布更多代码,我缺少一些变量声明。例如用户和会话变量。
  • app.use(session({ cookieName: 'usersession', secret: '0GB2ZbiKBtz2flRPvlJZ9EtczCewBxXK', duration: 24 * 60 * 60 * 1000, // 会话保持有效的时间为毫秒 activeDuration: 1000 * 60 * 5 }));
  • app.post('/login', function(request, response){ var body = request.body; connection.query("select * from registeration where username='"+body.username+" ' and password='"+body.pwd+"'",function(err, user){ if(err) { console.log("用户名和密码不匹配。"); response.end(); } else { console.log("done"); request.usersession.user = user; response.redirect(301, '/account'); } }); });
  • 请通过编辑将其添加到问题中。
  • 它不允许我添加代码

标签: javascript mysql node.js session express


【解决方案1】:

在尚未通过身份验证时添加重定向到 /login:

app.get('/account', function (request, response){       
    if(request.usersession && request.usersession.user) {          
        response.Send({requ: request.usersession.user});

        response.write('user detail ' + request.usersession.user[0]['username']);
        console.log('account in');
    }else{
        console.log('session error');

        // here you should redirect to login:
        response.redirect('/login');
        response.end();
    }
});

【讨论】:

  • 你可以删除那行
  • 请解释一下我是 node.js 的新手
  • 你看到的有“non-mysql”错误的行,但还没有告诉我们。如果我猜对了,那就是“else”之后的第一行
  • 这没什么,它只是一个 console.log 消息
  • 哦,是吗?所以也许回答@GiveMeAllYourCat 的问题?您正在使用连接而没有将其分配到任何地方。啊和“非mysql”错误;)......删除控制台日志将删除一个“非mysql”错误。如果你的意思是别的,那么请告诉我们什么错误!
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2014-01-12
  • 2023-03-14
  • 2018-05-29
相关资源
最近更新 更多