流星路由过滤器无法正常工作

时间:2014-11-17 16:20:38

标签: meteor iron-router

我正在尝试为我的meteor项目创建一个管理界面,为此我创建了一个自定义帐户注册表单,其中说

Accounts.createUser({
email: userEmail,
password: userPassword,
admin: true
})

在我的router.js代码中我有这个

Router.route('/admin', {name: 'admin'})

var requireAdminLogin = function(){
if(!Meteor.user({admin: true})){
this.render('accessDenied')
}else{
this.next();
}
}

Router.onBeforeAction(requireAdminLogin, {only: 'admin'})

问题是即使我更改我的注册码以说新用户注册不是管理员,我仍然可以访问我的管理页面。有人可以帮忙吗?谢谢

2 个答案:

答案 0 :(得分:0)

Meteor.user()不接受任何争论。你可能想要:

if (Meteor.user() && Meteor.user().admin) {
  // admin
} else {
  // access denied
}

我还怀疑将admin选项传递给Accounts.createUser并没有做任何事情。在服务器上,您可以var userId = Accounts.createUser后跟Meteor.users.update(userId, {$set: {admin: true}});

答案 1 :(得分:0)

名为houston:admin的软件包完全符合我的要求。