2016-08-23 3 views
-1

저는 PHP 프레임 워크가 없으므로 프레임 워크가 없으므로 간단히 session_start()를 수행하고 사용자 로그인 후에 [[username]] = 'sam'세션을 수행하고 모든 경로에서 세션 [ 'username']의 존재 여부를 확인하고 그렇지 않으면 로그인 페이지로 리디렉션하십시오.express.js에서 세션은 어떻게 작동합니까?

그러나 표현에 내가 명시 세션 NPM

var session = require("express-session"); 
var sessionMiddleware = session({ 
    secret: "secret", 
    resave: true, 
    saveUninitialized: true, 
    maxAge:365 * 24 * 60 * 60 * 1000 
}); 

이 NPM은 또한 쿠키를 생성에 같은 옵션을 많이보고 있어요, 왜 쿠키는 여기 사진에 와서? 왜 당신은 쿠키를 사용해야합니까 세션을 사용하는 경우? 나는 혼란스러워.

+0

그래서 PHP 세션이 어떻게 작동한다고 생각하십니까? PHP는 두 개의 서로 다른 클라이언트를 어떻게 구별합니까? – zerkms

+0

@zerkms 2 개의 다른 필라멘트를 의미합니까? 몰라. 나에게 마스타를 가르쳐 라. –

답변

1

HTTP는 상태 비 저장 프로토콜입니다. 사용자 또는 세션을 단독으로 식별 할 수는 없습니다. 그렇다면 대부분의 언어 플랫폼이 어떻게 이것을합니까? 해당 사용자에 대한 고유 한 ID를 생성하고이를 쿠키에 저장합니다. 또한 사용자 세션을 구별하기 위해 고유 ID를 사용하여 서버 측에 모든 세션 데이터를 저장합니다.

PHP에서 session_start()을 수행하면 PHPSESSID 또는 유사한 쿠키가 생성됩니다. 그런 다음 PHP는 모든 세션 데이터를 해당 키에 대해 파일이나 서버의 데이터베이스에 저장합니다. 사용자가 다른 페이지를 방문 할 때마다 PHP는 해당 쿠키의 값을 읽고 ID를 얻습니다. 해당 ID를 기반으로 PHP는 세션 데이터를 검색하여 $_SESSION으로 사용할 수 있도록합니다.

express를 포함한 거의 모든 웹 프레임 워크에서 똑같은 것이 사실입니다.

+0

좋은 설명이지만 세션을 언급 할 때 실제로 쿠키와 관련이 있습니까? 나는 사람들이 세션 쿠키를 파일 서버 또는 db에 저장하는 것을 보았습니다. 왜 그럴까요? 서버 측 메모리에 충분하지 않습니까? –

+0

예, 메모리에 저장할 수는 있지만 메모리는 일시적으로 변하지 않을 수 있습니다. – masnun

+0

@masnum 그래서 세션 쿠키를 db에 저장하는 것이 좋습니다. 그 모든 요청을 db에서 필요한 호출합니다. –

관련 문제