2

我试图在未经授权的情况下将用户重定向到 403 页面。我在 CM9Cwq7HXD6yHjKRp 中添加了角色“admin”、“default-group”,它在模板级别上就像一个魅力。但在路由器上无法按预期工作。

我的路线组分为 2 个主要组

// Public routes
var publicFlowRouter; 
publicFlowRouter  = FlowRouter.group({});

// Private routes
var privateFlowRouter;
privateFlowRouter = FlowRouter.group({
  triggersEnter: [
    function() {

    var route;

    if (!(Meteor.loggingIn() || Meteor.userId())) {

      route = FlowRouter.current();

      if (route.route.name !== 'home') {
        Session.set('redirectAfterLogin', route.path);
      }

      return FlowRouter.go('home');
    }
  }
  ]
});

这些路由没有任何问题,但问题从 adminPrivateFlowRouter 开始;

// Private routes extended for admin
var adminPrivateFlowRouter;
adminPrivateFlowRouter = privateFlowRouter.group({
  triggersEnter: [ 
    function() {
      // If user is not authenticated redirect to homepage
      console.log(Meteor.userId());
      console.log(Roles.userIsInRole(Meteor.userId(), 'admin', 'default-group'));
      if (Roles.userIsInRole(Meteor.userId(), 'admin', 'default-group')) {
        console.log('Authenticated user');       
      } else {
        console.log('403 Access Denied');
        //return FlowRouter.go('home');
      }
    }
  ]
});

工作不稳固。当我刷新同页控制台时有时会说 CM9Cwq7HXD6yHjKRp false 403 Access Denied

CM9Cwq7HXD6yHjKRp true 认证用户

没找到问题出在哪里,谢谢

4

1 回答 1

0

请参阅如何让 FlowRouter 在客户端等待用户收集

您可以在订阅准备就绪时手动初始化 FlowRouterFlowRouter.wait()来解决您的问题。FlowRouter.initialize()Roles

于 2016-06-14T14:10:20.947 回答