检查UserRole并发送到唯一的主页

时间:2016-06-30 21:31:33

标签: meteor

当用户登录他们的帐户时,我想检查用户角色并将他们引导到合适的主页。角色由meteor-roles设置,我使用flow-router设置。目前这只会引发一个触发错误:

Exception from Tracker recompute function:
TypeError: Cannot read property 'roles' of undefined

甚至可以在路由器文件中访问roles吗?

路径:Routes.js

FlowRouter.route("/", {
  name: 'home',
  action: function() {
    var user = Meteor.user();
    var userRole = user.roles;

    if (userRole == 'is_student') {
      FlowRouter.go('profileNew');
    } else if (userRole == 'is_teacher') {
      FlowRouter.go('profile');    
    } else {
      FlowRouter.go('profileAdmin');
    }
  }
});

1 个答案:

答案 0 :(得分:1)

var user = Meteor.user(); //您没有登录,因为应用程序刚刚启动

var userRole = user.roles; //此时用户未定义,那么如何获得角色?这就是它抛出错误的原因。

所以你可以像这样管理这种情况: -

FlowRouter.route("/", {
  name: 'home',
  action: function() {
    var user = Meteor.user();
    if(user){
       var userRole = user.roles;
       if (userRole == 'is_student') {
           FlowRouter.go('profileNew');
       } else if (userRole == 'is_teacher') {
           FlowRouter.go('profile');    
       } else {
          FlowRouter.go('profileAdmin');
       }
    }
  }
});