2016-04-27 2 views
1
var redis = require('redis'); 
var router = express.Router(); 
var mysql = require('mysql'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var client = redis.createClient(); 
var session = require('express-session'), 
RedisStore = require('connect-redis')(session); 
var app = express(); 
app.use(cookieParser); 
app.use(session({ 
    store : new RedisStore({ 
    host:'localhost', 
    port:7351, 
    maxAge: 300000, 
    client:client, 
    ttl:260 
    } 
), 
secret:'dafdsa', 
resave:false, 
saveUninitialized:true, 
})); 

это моя установка, и это мой кодэкспресс-сеанс не удается установить свойство «идентификатор» неопределенной

router.post('/', function(req, res, next) { 
    var id = req.body.userid; 
    var passwd = req.body.password; 
    var sess = req.session; 
    var login_chk = pool.getConnection(function(err,connection){ 
     connection.query('SELECT U_passwd FROM Member WHERE U_id = ?',[id],function(err,row,req){ 
     if(err)console.log(err); 
     var sqlpasswd = row[0].U_passwd; 
     var answer = 0; 
     answer = passwd_chk(passwd,sqlpasswd); 
     if(answer ===1){ 
      save_session(id); 
      res.render('main'); 
     } 


var save_session = function(req){ 
    req.session.id = req; 
} 

я вывешу (Логин) и я сохранить идентификатор в сессии, но этот код всегда заблуждаться не могу установить свойство ... как я могу это исправить? ... ответ

+0

Это происходит потому, что вы проходите как 'save_session (req)' userId, а userId не имеет 'session.id' – Sapikelio

ответ

1

Это происходит потому, что вы передаете userId как аргумент save_session(req). Тогда вы делаете req.session.id = req; в вашем случае так же, как userId.session.id = userId;. Ошибка уведомляет вас о том, что userId не имеет session недвижимости (предположительно). Все, что вам нужно, это передать req и userId в качестве аргументов. Измените свой код следующим образом.

router.post('/', function(req, res, next) { 
    var id = req.body.userid; 
    var passwd = req.body.password; 
    var sess = req.session; 
    var login_chk = pool.getConnection(function(err,connection){ 
     connection.query('SELECT U_passwd FROM Member WHERE U_id = ?',[id],function(err,row,req){ 
     if(err)console.log(err); 
     var sqlpasswd = row[0].U_passwd; 
     var answer = 0; 
     answer = passwd_chk(passwd,sqlpasswd); 
     if(answer ===1){ 
      save_session(req,id);  <--- Change this 
      res.render('main'); 
     } 


var save_session = function(req,id){ <--- Change this 
    req.session.id = id;    <--- Change this 
} 

Надеюсь, это поможет.

+0

благодарит вас за ваш anwer! но есть такая же ошибка для меня, i console log req и id value req show [object object] и значение id показывают значение моего идентификатора, что я могу сделать .... –

+0

mmmmm print 'console.log (req.session.id) 'и скажите мне, какое значение показывает – Sapikelio

+0

Я сожалею о вашей помощи. Я сожалею о сеансе. Я использую паспорт:« (спасибо за вашу помощь, благослови вас –

Смежные вопросы