我使用session .set('email','email name')存储电子邮件,但当我重新加载页面时,此会话电子邮件将变为未定义。我使用Session.get('email')来获取用户电子邮件。
Router.route('profile', {
path: '/profile',
data: function() {
$("body").removeClass('home');
this.render('profile');
setTimeout(function(){
$('#username').html(Session.get('first_name'));
$('#profile_username').html(Session.get('first_name'));
$('#setting_name').val(Session.get('first_name'));
$('#setting_username').val(Session.get('first_name'));
$('#setting_email').val(Session.get('email'));
$('#user_id').val(Session.get('id'));
$('.setting_day').val(Session.get('day'));
$('.setting_month').val(Session.get('month'));
$('.setting_year').val(Session.get('year'));
if(Session.get('image')!= ''){
$('.user_profile_image').attr("src",Session.get('image'));
}
if(Session.get('gender') == 0){
$('#user_gender').html('Male');
}else{
$('#user_gender').html('Female');
}
$('#day').html(Session.get('day'));
$('#month').html(Session.get('month'));
$('#year').html(Session.get('year'));
},100);
},
onBeforeAction: function () {
alert(Session.get('email'));
if(Session.get('email')){
this.next();
}else {
this.redirect('/');
}
}
});
答案 0 :(得分:1)
安装持久性包Session。您的会话变量也会在路径中保持不变。您需要通过Meteor设置进行配置。所以不要忘记在运行项目时包含设置。
答案 1 :(得分:0)
当您在meteor中重新加载页面页面时,所有客户端的活动内容都会重新初始化。如果您想在页面刷新时保留电子邮件,那么您必须在服务器上发送它,然后您可以根据需要获取此信息。您可以将其保存到集合中,然后根据需要从流星调用或发布 - 订阅中获取。
答案 2 :(得分:0)
当您刷新页面时,您不再处于同一会话中,因此您所描述的是预期的和正确的默认行为。有一个包(我现在不知道它的名字,但应该很容易找到大气的),它给你Session.setPersistent(...)。我想这就是你要找的东西。