当我在meteor JS中重新加载页面时,会话电子邮件变得不确定

时间:2016-04-29 09:00:54

标签: meteor

我使用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('/');
    }
  }
});

3 个答案:

答案 0 :(得分:1)

安装持久性包Session。您的会话变量也会在路径中保持不变。您需要通过Meteor设置进行配置。所以不要忘记在运行项目时包含设置。

u2622:persistent-session

答案 1 :(得分:0)

当您在meteor中重新加载页面页面时,所有客户端的活动内容都会重新初始化。如果您想在页面刷新时保留电子邮件,那么您必须在服务器上发送它,然后您可以根据需要获取此信息。您可以将其保存到集合中,然后根据需要从流星调用或发布 - 订阅中获取。

答案 2 :(得分:0)

当您刷新页面时,您不再处于同一会话中,因此您所描述的是预期的和正确的默认行为。有一个包(我现在不知道它的名字,但应该很容易找到大气的),它给你Session.setPersistent(...)。我想这就是你要找的东西。