流星角色.userIsInRole()总是返回false



我的第一个按钮创建了一个简单的用户,如下所示:

'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']字段(如果这是一次性的)。

最新更新