meteor - 在 Iron Router 中的 URL 的特定部分运行代码

标签 meteor iron-router

我有一个应用程序,它大量使用功能,由具有不同角色的特定用户分隔。

问题是我想限制对某些模板的访问,例如,如果用户不是管理员。

目前,我有这个:

Router.route('createUser', {
  path: '/admin/users/',
  onBeforeAction: function() {
    if(!isAdmin()) {
        Router.go('/');
    }
    this.next();
  }
});

但是,指定对每个其他路由的 if(isAdmin()) 调用是一件痛苦的事情。我想知道是否有其他简单且不易出错的方法来做到这一点。

也许一些正则表达式魔法可以,但我似乎没有找到任何使用示例。

最佳答案

首先我会推荐你​​阅读这篇文章meteor:common-mistakes个人资料编辑部分

所以我会建议您更好地使用alanningroles-meteor package .

super 容易使用,这里有一个Online DEMOSource Code如果您有疑问。

在路由器级别,您可以创建一个像这样的 onBefore Hook 。

isAdmin = function(){
  var currentUser = Meteor.user()
         isUserSuperAdmin = Roles.userIsInRole(currentUser,'Super-Admin'); //using alaning roles.

           if(isUserSuperAdmin){ //or use isAdmin(); 
             this.next();
           }else{
             this.render('accessDenied')
           }
}

Router.onBeforeAction('accessDenied', {only: ['admin','otherAdminRoute',etc]});

关于meteor - 在 Iron Router 中的 URL 的特定部分运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685860/

相关文章:

typescript 和 meteor : Cannot find name 'Meteor'

node.js - 如何处理 npm3 对等依赖冲突

node.js - 铁刨 meteor Jade 的产量及含量

node.js - 迁移到 FlowRouter,需要类似于模板数据上下文的东西

Meteor.js - 使用 pathFor 和 "foreign key"

meteor - 实例化 Restivus 时出错 "Cannot find name ' Restivus' "

meteor - 动态模板和未定义的属性值

javascript - Meteor:未从 app/lib/_constants.js 中获取全局常量

Meteor 崩溃,发现铁路由器包出现错误 : No version 0. 9.1

javascript - 使用 iron-router 从 super Controller 继承 yield 模板