유성우 앱에서 세션 변수가 페이지 새로 고침시 지워졌습니다. 따라서페이지 새로 고침시 Meteor 세션 변수가 지워지는 이유
- 유성 사용자 로그인 세부 정보는 어떻게 저장됩니까?
- 세션에 저장되지 않습니까?
- 어떻게이 문제를 관리 할 수 있습니까?
유성우 앱에서 세션 변수가 페이지 새로 고침시 지워졌습니다. 따라서페이지 새로 고침시 Meteor 세션 변수가 지워지는 이유
Meteor.Session은 클라이언트 측에만 있습니다. 애플리케이션의 JavaScript 전역 객체입니다. 페이지를 새로 고침하면 삭제됩니다. 세션은 클라이언트 측 로컬 저장소 인 https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage에 저장됩니다. Meteor는 세션에 쿠키를 사용하지 않습니다 (https://www.meteor.com/blog/2014/03/14/session-cookies).
당신이 성취하려는 것을 더 설명해야합니다. Meteor.Session은 페이지가로드되고 많은 것들을로드하지 않고 초기 상태를 얻기 위해 URL에 초기 상태를 설정하는 데 필요한 충분한 정보가 들어 있습니다.
유성을 사용하면 브라우저를 새로 고침하지 않는 것이 이상적입니다. AJAX 및 HTML5 푸시 상태가 이상적이며 유성의 반응성이 모두 발생하거나 발생해야합니다.
해당 문서를 읽어야합니다. 세션에 대한 섹션은 다음과 같습니다. http://docs.meteor.com/#session
이 질문은 오래된 질문이지만, 동일한 것을 필요로한다는 것을 알았 기 때문에 여기에 제가 한 것입니다. 나는 세션을 확장하여 실제로 값을 설정할 때 localstorage에 저장하고 페이지가로드 될 때 세션에 localstorage를로드합니다.
// improving the session package to persist it to the localstorage
Session._set = Session.set;
Session.set = function(key,value) {
Session._set(key,value);
localStorage.setItem(key,JSON.stringify(value));
};
// helper function
function isJSON(str) {
try {
return (JSON.parse(str) && !!str);
} catch (e) {
return false;
}
}
// loading the localstorate on load
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
var value = localStorage.getItem(key);
Session._set(key,isJSON(value) ? JSON.parse(value) : value);
}