javascript - meteor 检查用户是否是管理员

标签 javascript mongodb meteor server admin

我有一个 Meteor 应用程序,如果用户是管理员,我需要在其中为该应用程序设置某种类型的变量,以便稍后我可以使用它来显示/隐藏 HTML 的某些元素。要确定用户是否是管理员,我必须检查设备上 LocalStorage 中的一个对象,看看它是否与 secret 字符串匹配,这将授予用户管理员访问权限。但是,我不希望客户端看到 secret 字符串。现在,我有一个文件 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,并将其与 secret 字符串进行比较,然后然后设置一个变量,指示用户是否是我可以在应用程序的其余部分使用的管理员。我还需要它是安全的,这样客户端就不能仅仅将变量或其他任何东西设置为管理员。

最佳答案

Roles包正是你需要的,

要添加这个包,执行这个命令:

meteor add alanning:roles

你可以像这样给用户添加 Angular 色:

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

然后您可以验证用户是否具有这样的 Angular 色:

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

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

}

关于javascript - meteor 检查用户是否是管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951892/

相关文章:

javascript - 如何在 Chart.js 2 中为两个不同的条形图保留条形之间的间距

javascript - 单击下拉菜单中的链接调用 javascript 函数时输入错误意外结束

MongoDB - 总和

linux - robomongo 无法执行

javascript - Mongodb 异步等待与 Express

javascript - 我可以在不使用整个 Meteor 或 Blaze 框架的情况下使用 Minimongo 吗?

javascript - 如何使用JS Sort对多个元素进行排序

javascript - 当我尝试隐藏 Card 样式的侧边栏时出现奇怪的行为

javascript - 为什么模板事件中的 findOne 会导致调用堆栈大小错误?

javascript - 为什么这没有将文档插入到我的 MongoDB 集合中?