我发现在meteor中删除用户帐户的唯一方法(除了使用mrt reset清空数据库),实际上是登录到该特定用户帐户,并使用以下命令从控制台删除帐户:
Meteor.users.remove('the user id');
但就像我说的那样,我需要以特定用户身份登录,并且无法找到能够从db中删除任何用户的解决方案。我确定它与权限或角色有关,但我不知道如何继续/什么是最佳解决方案/如何为特定用户设置管理角色,以便我可以删除不同的用户帐户。
答案 0 :(得分:20)
你可以做到
meteor mongo
或
已部署的应用 meteor mongo myapp.meteor.com
然后
db.users.remove({_id:<user id>});
我不推荐它,但如果你想删除任何用户而没有从meteor登录,你需要修改允许规则。但删除用户是一个非常不可能的事件,因此上述可能是最好的方法。
无论如何,如果你想要,修改Meteor.users.allow({remove:function() { return true });
属性。见http://docs.meteor.com/#allow。你可以在那里添加一些自定义逻辑,所以如果你是管理员那么它只会让你这样做
答案 1 :(得分:9)
我在nitrous.io上做这件事时遇到了麻烦,因为我无法打开Meteor和Mongo。我说:
Meteor.users.remove(' the _id of the user ');
在isServer部分中删除用户。
答案 2 :(得分:3)
如果有人仍在寻找这个问题的答案,我在下面概述了我的解决方案。
当我创建新用户时,我在用户文档中添加了一个名为role的字段。如果我希望用户能够从Meteor.users
集合中删除其他用户,我会授予他administrator
的角色权限。如果没有,我给他一个member
的角色。所以,我的用户文档看起来像这样 -
{
"_id" : ...,
"createdAt" : ...,
"services" : {...},
"username" : "test",
"profile" : {
"name" : "Test Name",
"role" : "administrator"
}
}
在客户端上,我有一个用户列表(使用#each
模板标记添加),每个用户旁边都有一个删除按钮。用户必须登录才能看到此列表。我为删除按钮定义了一个事件处理程序 -
'click #remove-user-btn': function () {
Meteor.users.remove({ _id: this._id }, function (error, result) {
if (error) {
console.log("Error removing user: ", error);
} else {
console.log("Number of users removed: " + result);
}
})
}
但是,Meteor.users默认情况下不允许从客户端删除操作。因此,您必须编辑服务器中的Meteor.users.allow
回调,如下所示,以允许从客户端删除用户。但我们需要确保只有具有管理员角色的用户才能获得此权限。
Meteor.users.allow({
remove: function (userId, doc) {
var currentUser, userRole;
currentUser = Meteor.users.findOne({ _id: userId }, { fields: { 'profile.role': 1 } });
userRole = currentUser.profile && currentUser.profile.role;
if (userRole === "administrator" && userId !== doc._id) {
console.log("Access granted. You are an administrator and you are not trying to delete your own document.");
return true;
} else {
console.log("Access denied. You are not an administrator or you are trying to delete your own document.");
return false;
}
},
fetch: []
});
这是一般的想法。您可以在此基础上进行构建,以满足您的需求。
答案 3 :(得分:0)
以下是通过控制台从mongo中删除用户的步骤: 第1步:打开新控制台 第2步:将diretory更改为您的应用程序,例如(cd myapp) 第3步:输入命令 meteor mongo 第4步:确保存在一个名为users的表,db.users.find({}); 步骤5:找到您要删除的用户的用户标识并键入 db.users.remove({_ ID:&#34; nRXJCC9wTx5x6wSP2&#34;}); // id应在引号内