[英]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.