我的第一个按钮创建了一个简单的用户,如下所示:
'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']);
}
该用户被分配了一个"管理员"角色。然后,当我登录时,我有一个按钮来检查我是否是管理员:
'click .checkRole': function()
{
console.log(Roles.userIsInRole(Meteor.userId(), 'admin'));
}
但它总是返回false,那么问题出在哪里呢?
用户的id和角色不同,应该是这样吗?
用户可能未成功添加到角色中。问题是你真的在客户端使用这行代码(因为任何人都会把它输入自己并成为管理员):
Roles.addUsersToRoles([this._id], ['admin']);
您必须在服务器上执行此过程,可能是在项目服务器端的Accounts.onCreateUser回调中。
或者,您可以连接到流星的mongodb,并在users
集合中的用户文档中添加一个roles: ['admin']
字段(如果这是一次性的)。