我有一个应用程序,它大量使用功能,由具有不同角色的特定用户分隔。
问题是我想限制对某些模板的访问,例如,如果用户不是管理员。
目前,我有这个:
Router.route('createUser', {
path: '/admin/users/',
onBeforeAction: function() {
if(!isAdmin()) {
Router.go('/');
}
this.next();
}
});
但是,指定对每个其他路由的 if(isAdmin())
调用是一件痛苦的事情。我想知道是否有其他简单且不易出错的方法来做到这一点。
也许一些正则表达式魔法可以,但我似乎没有找到任何使用示例。
最佳答案
首先我会推荐你阅读这篇文章meteor:common-mistakes在个人资料编辑部分
所以我会建议您更好地使用alanningroles-meteor package .
super 容易使用,这里有一个Online DEMO和 Source 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/