복붙노트

[REDIS] 명시 적 / 연결 및 세션 저장소를 사용하는 경우 어떻게 세션 ID를 찾을 수 있습니까?

REDIS

명시 적 / 연결 및 세션 저장소를 사용하는 경우 어떻게 세션 ID를 찾을 수 있습니까?

사용자가 이미 새로운 인스턴스에 다시 로그인 및 시도에 기록되면 나는 다른 사용자 인스턴스를 로그 아웃하고 싶습니다. 나는 동일한 사용자가 내 응용 프로그램에 두 번에 기록되지 않습니다.

현재 세션이 레디 스 저장소에 저장됩니다, 내가 표현을 사용하고 / 세션 스토리지를 처리하기 위해 연결합니다. 다음과 같이 세션을 파괴하는 데 사용할 수 있습니다 사용할 수있는 기능 중 하나입니다 :

.destroy(sid, callback)

그러나 나는) (즉, 세션 ID I 전에 전화 .destroy을 찾을 필요가있다. 레디 스에서 사용자 이름은 세션의 일부로 저장됩니다.

질문 : 가능하면 사용자 이름을 기반으로 세션 ID를 얻기 위해 레디 스를 조회하려면?

해결법

  1. ==============================

    1.req.sessionID 당신에게 REQ가 요청 객체 인 세션의 ID를 제공 할 것입니다.

    req.sessionID 당신에게 REQ가 요청 객체 인 세션의 ID를 제공 할 것입니다.

  2. ==============================

    2.최근 독자;

    최근 독자;

    연결 미들웨어는 버전 4부터 익스프레스에 포함되지 않습니다.

    그래서 위해 당신은 다음을 수행해야합니다 req.sessionID 작업을합니다 :

  3. ==============================

    3.사용자 계정의 전화 .destroy (SID, FN)의 데이터베이스 검증시에 사용자가 로그인 한 다음 사용자의 현재 SID와 데이터베이스의 SID를 업데이트 할 때, 계정으로 SID를 저장합니다.

    사용자 계정의 전화 .destroy (SID, FN)의 데이터베이스 검증시에 사용자가 로그인 한 다음 사용자의 현재 SID와 데이터베이스의 SID를 업데이트 할 때, 계정으로 SID를 저장합니다.

    MongoDB를 사용하여 내 경우에는이 내가 그것을 한 적이 방법입니다 :

    app.post('/login', function(req, res)
    {
      var sid = req.sessionID;
      var username = req.body.user;
      var password = req.body.pass;
    
      users.findOne({username : username, password : password}, function(err, result)
      { 
        ...
        sessionStore.destroy(result.session, function(){
           ...
           users.update({_id: result._id}, {$set:{"session" : sid}});
           ...
        }
        ...
      }
    }
    
  4. ==============================

    4.제 레디 스의 세션 키는 사용자 이름의 이름을 따서 명명되지 않는다.

    제 레디 스의 세션 키는 사용자 이름의 이름을 따서 명명되지 않는다.

    가 이미 다시 로그인 사용자 시도 로그인하면 응용 프로그램에서, 그것을보고, 중 즉시 이전 세션을 파괴하거나 다시 로그인 할 수 없습니다 수 없습니다 여기에 생각하지만,입니까?

  5. from https://stackoverflow.com/questions/9291548/how-can-i-find-the-session-id-when-using-express-connect-and-a-session-store by cc-by-sa and MIT license