我目前正在开发一个需要用户和管理员的应用程序。我现在要做的是,在客户端上创建一个管理员帐户,用户名为“admin”,默认密码应通过帐户用户界面进行更改。
我这样做是因为创建这样的用户:
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; 的内容。 }
进入 Chrome 的网络控制台
最好的方法是仅当用户是管理员时才从服务器端向客户端提供信息。因此,这意味着如果从客户端执行操作,则使用 Meteor.allow 来确保数据库只能由管理用户更改。
这还取决于您想使用“isAdmin”来做什么。如果是内容,您可以在服务器端生成 html 并将其通过 Meteor.methods
发送到客户端。目前,模板系统不提供根据用户文档包含的内容锁定客户端 UI 的功能。
对于任何管理命令,您可以使用 Meteor.call
,此时用户将在服务器上进行审查,并在服务器上执行事务。
关于security - Meteor - 检查用户是否以管理员身份登录(客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682924/