我的第一个按钮创建了一个这样的简单用户:
'click .insertBtn': function()
{
var email = document.getElementById('email').value;
var pass = document.getElementById('password').value;
Accounts.createUser(
{
email: email,
password: pass,
profile: { name: 'test' }
});
Roles.addUsersToRoles([this._id], ['admin']);
}
此用户被分配了“admin”角色。我在登录时有一个按钮来检查我是否是管理员:
'click .checkRole': function()
{
console.log(Roles.userIsInRole(Meteor.userId(), 'admin'));
}
但它总是返回假,所以可能是什么问题?
用户的ID和角色是不同的,应该是怎么回事?
答案 0 :(得分:1)
用户可能尚未成功添加到该角色。问题是你真的在客户端使用这行代码(因为那时任何人都只需输入自己并成为管理员):
Roles.addUsersToRoles([this._id], ['admin']);
您必须在服务器上执行此过程,可能在项目服务器端的Accounts.onCreateUser回调中。
或者您可以连接到meteor的mongodb并在roles: ['admin']
集合中为用户的文档添加users
字段,如果这是一次性的话。