Meteor - 检查用户是否以管理员身份登录(客户端)

时间:2013-02-04 08:28:45

标签: security node.js meteor administrator

我目前正在开发一款需要用户和管理员的应用。我现在做的是,我在客户端创建了一个管理员帐户,用户名为“admin”,默认密码应该通过accounts-ui进行更改。

我这样做是因为创建了这样的用户:

Accounts.createUser({
    username    : 'admin',
    email       : 'test@test.com',
    password    : 'changethispasswordovertheuserinterface',
    profile     : { type : 'admin' }
});

在服务器端对我不起作用。这意味着我只需在我的client.js中创建管理员,并使用此代码检查管理员是否已登录。

Template.admin.isAdmin = function () {
    var currentUser = Meteor.user();
    // Is this hackable?
    if (null !== currentUser) {
        if ('admin' === currentUser.username) {
            return true;
        }
    }
};

这是解决此问题的最佳方法吗?最重要的是,我的网站是否像这样可以破解(有人可以伪造它)吗?

2 个答案:

答案 0 :(得分:3)

是的,这是可以攻击的,可以拉起铬检查员并轻松修改它。或者更快,在Chrome的网络控制台中键入Template.admin.isAdmin = function () { return true; }之类的内容

如果用户是管理员,最好的方法是仅从服务器端向客户端提供信息。所以这意味着使用Meteor.allow来确保只有管理用户才能更改数据库,如果从客户端执行操作。

这也取决于您想要使用'isAdmin'的内容。如果是其内容,您可以在服务器端生成html并将其发送到Meteor.methods中的客户端。目前,模板系统不提供锁定客户端上的UI,具体取决于用户的文档包含的内容。

对于任何管理命令,您可以使用Meteor.call,此时用户在服务器上进行审查,并在那里执行事务。

答案 1 :(得分:-2)

this thread的答案也有效,而得票最高的答案包含服务器端的代码,Meteor方法调用。