2017-11-25 12 views
0

Redis에서 Expression 세션을 저장하는 작업 코드가 있습니까?Express 세션이 표현 세션을 사용하여 redis에 저장되지 않습니다 - redis 연결

각도 4 로그인 페이지를 생성합니다. Express 세션을 사용하여 Redis에 사용자 세션을 저장하고 싶습니다.

스피 점점 오류 세션은 내가 레디 스에서 sessionid를 볼 수있는 방법을

을 정의되지?

Iam이이를 사용했습니다. 어떤 신체가 똑같은 문제에 직면 했습니까? 귀하의 도움에 감사드립니다

+0

지난 2 일 동안 이걸 시도했지만받지 못했습니다. 덕분에 당신의 도움 – Jan

답변

1

express-sessionconnect-redis을 사용하여이 문제를 해결할 수 있습니다.

완전한 예 :

const express = require('express'); 
const app = express(); 

const session = require('express-session'); 
const RedisStore = require('connect-redis')(session); 

// Create redis client 
const redis = require('redis'); 
// default client tries to get 127.0.0.1:6379 
// (a redis instance should be running there) 
const client = redis.createClient(); 
client.on('error', function (err) { 
    console.log('could not establish a connection with redis. ' + err); 
}); 
client.on('connect', function (err) { 
    console.log('connected to redis successfully'); 
}); 

// Initialize middleware passing your client 
// you can specify the way you save the sessions here 
app.use(session({ 
    store: new RedisStore({client: client}), 
    secret: 'some secret', 
    resave: false, 
    saveUninitialized: true 
})); 

app.get('/', (req, res) => { 
    // that's how you get the session id from each request 
    console.log('session id:', req.session.id) 
    // the session will be automatically stored in Redis with the key prefix 'sess:' 
    const sessionKey = `sess:${req.session.id}`; 
    // let's see what is in there 
    client.get(sessionKey, (err, data) => { 
    console.log('session data in redis:', data) 
    }) 
    res.status(200).send('OK'); 
}) 

app.listen(3000,() => { 
    console.log('server running on port 3000') 
}) 

/* 
If you check your redis server with redis-cli, you will see that the entries are being added: 
$ redis-cli --scan --pattern 'sess:*' 
*/ 

더 자세한 정보는 thisthis을 읽을 수 있습니다.

희망이 도움이됩니다.

+0

나는 express-session과 connect-redis도 사용하고 있습니다. 나는 당신의 코드를 redis로부터 가져 오려고 시도했다. client.get (sessionKey, (err, data) => { console.log ('세션 데이터 in redis :', data) }). 하지만 null을 반환합니다. 그것은 redis에 저장되지 않습니다. 세션이 저장되는 위치가 확실하지 않습니다. – Jan

+0

'client.get()'의'err' 객체는 무엇을 출력합니까? @Jan –

+0

또한 'Null'을 반환합니다. – Jan