我正在尝试为我的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'})
问题是即使我更改我的注册码以说新用户注册不是管理员,我仍然可以访问我的管理页面。有人可以帮忙吗?谢谢
答案 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的软件包完全符合我的要求。