流星Roles.userIsInRole()总是返回false

时间:2014-04-23 16:52:22

标签: meteor roles

我的第一个按钮创建了一个这样的简单用户:

'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和角色是不同的,应该是怎么回事?

1 个答案:

答案 0 :(得分:1)

用户可能尚未成功添加到该角色。问题是你真的在客户端使用这行代码(因为那时任何人都只需输入自己并成为管理员):

Roles.addUsersToRoles([this._id], ['admin']);

您必须在服务器上执行此过程,可能在项目服务器端的Accounts.onCreateUser回调中。

或者您可以连接到meteor的mongodb并在roles: ['admin']集合中为用户的文档添加users字段,如果这是一次性的话。