繁体   English   中英

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

[英]Meteor - Check if user is logged in as administrator (Client - Side)

我目前正在开发需要用户和管理员的应用程序。 我现在要做的是,在客户端上创建一个用户名为admin的管理员帐户,并应通过account-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;
        }
    }
};

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

是的,这很容易被黑客入侵,您可以拉起chrome检查器并轻松修改它。 甚至更快,通过输入类似Template.admin.isAdmin = function () { return true; } Template.admin.isAdmin = function () { return true; }进入Chrome的网络控制台

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

这也取决于您要使用“ isAdmin”的目的。 如果内容Meteor.methods ,您可以在服务器端生成html并将其通过Meteor.methods发送给客户端。 目前,模板系统尚无法根据用户文档中包含的内容来锁定客户端上的UI。

对于任何管理命令,都可以使用Meteor.call ,此时将在服务器上审查用户,然后在该服务器上执行事务。

此线程上的答案也起作用,并且投票最多的答案包含服务器端的代码,即Meteor方法调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM