내 노드/HTML 프로젝트에서 express 4 및 express-session을 사용하는 데 문제가 있습니다.Nodejs : 생성 후 세션이 정의되지 않았습니다.
login.html
은 노드 프로그램을 ajax 호출합니다.노드가 성공하면
req.session.username
속성에서 사용자 이름을 기억하는 세션을 생성하고csmain.html
을login.html
으로 반환합니다.login.html
은 브라우저를csmain.html
으로 리디렉션합니다.csmain.html
은 즉시load()
에서 ajax 호출을하지만, 문제는 현재 세션이 준비되지 않은 것처럼 보입니다.req.session.user
은 노드에서 정의되지 않습니다. 즉, ajax 호출에서 브라우저가load()
에 세션을 사용하지 않았 음을 의미합니다.
어떻게 해결할 수 있습니까? 노드의 로그인 부분에
코드는 로그인 HTML에서 --javascript 부분을 재 세션을
request.session.regenerate(function(err) {
});
if (request.session.views) {
// empty
} else {
request.session.views = 1;
request.session.username = username;
}
HTML을 생성합니다. 당신이 다음이 regenerate()
호출이 비동기 가능성이 세션 저장소로 데이터베이스를 사용하고 있기 때문에 xmlHttp.responseText
에서 제 1 회 캐릭터 로그인 상태이며, 나머지 텍스트는 HTTP 링크
if (status === BDX_ERR_SQL_WRONG_PASSWORD) {
document.getElementById("feedbackMsg").innerHTML = 'login error';
}else if (status === '0') {
window.location = '../' + xmlHttp.responseText.substring(1, len);
}
를 사용하는 세션 저장소의 어떤 종류 즉, 콜백이 호출 될 때까지 당신이 이런 식으로 할 필요가 있으므로
regenerate()
이 완료되지 않음을 의미? 어떤 경우에는'regenereate()'가 비동기적일 수 있습니다. 콜백이 호출 될 때까지 완료되지 않으므로 재생성 콜백 내에 새 세션을 사용하는 코드를 넣어야합니다. – jfriend00@ jfiend00 세션의 백 스토어로 redis를 사용하고 있습니다. 다시 생성하는 콜백은 무엇입니까? 나는 익스프레스 세션 웹 사이트에서 찾을 수 없습니다. 예를 들려 줄 수 있습니까? – StevenZ