meteor角色。userIsInRole()始终返回false
我的第一个按钮创建了一个简单的用户,如下所示:meteor角色。userIsInRole()始终返回false,meteor,roles,Meteor,Roles,我的第一个按钮创建了一个简单的用户,如下所示: 'click .insertBtn': function() { var email = document.getElementById('email').value; var pass = document.getElementById('password').value; Accounts.createUser( { email: email,
'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和角色id不同,是不是应该是这样?用户可能没有成功添加到角色中。问题是,您确实在客户端使用了这一行代码(因为这样一来,任何人都会将其输入到自己并成为管理员): 您必须在服务器上执行此过程,可能是在项目服务器端的回调中
或者,您可以连接到meteor的mongodb,并在
users
集合中的用户文档中添加一个roles:['admin']
字段,如果这是一次性的。如果您正在使用roles.addUsersToRoles([this.\u id],'admin']);在客户端上,它将不起作用。您必须从客户端使用Meteor.call方法在服务器上添加角色。如果成功,您将看到角色数组添加到该用户Id的用户集合中
Roles.addUsersToRoles([this._id], ['admin']);