流星检查用户是否为管理员

时间:2016-03-11 23:44:58

标签: javascript mongodb meteor server admin

我有一个Meteor应用程序,如果用户是管理员,我需要为应用程序设置某种类型的变量,这样我以后可以使用它来显示/隐藏HTML的某些元素。要确定用户是否是管理员,我必须检查设备上LocalStorage中的对象,看它是否与秘密字符串匹配,这将授予用户管理员访问权限。但是,我不希望客户端看到秘密字符串。现在,我有一个文件server/server.js,其中包含一个函数:

function isAdmin(cookie) {
    if(cookie == "secret") {
        return true;
    } else {
        return false;
    }
}

但是,似乎我无法从我的主要.js文件中访问我正在使用的应用程序中的该功能:

Meteor.startup(function(){
    admin = false;
    if(typeof(Storage) !== "undefined") {
        cookie = localStorage.getItem("admin");
        admin = isAdmin(cookie);
    }
});

我不知道我是否想要解决这个问题,我需要它做的是每次客户端加载网站时检查localStorage是否有cookie并将其与秘密字符串进行比较,并且然后设置一个变量,指示用户是否是我可以在应用程序其余部分使用的管理员。我还需要它是安全的,因此客户端不能只是将变量或其他任何东西设置为管理员。

1 个答案:

答案 0 :(得分:4)

Roles包正是您所需要的,

要添加此包,请执行以下命令:

meteor add alanning:roles

您可以像这样向用户添加角色:

Roles.addUsersToRoles(someUserId, 'super-admin', Roles.GLOBAL_GROUP)

然后您可以验证用户是否具有以下角色:

if (Roles.userIsInRole(someUserId, ['super-admin'], 'real-madrid.com')) {

  // if a user has the 'super-admin' role he will be able to access here

}