有没有办法登录管理员用户的其他用户帐户?
目前基于 Meteor帐户
的身份验证我看到this post但现在根本没有工作。
该功能对我们很重要,因为当用户在系统中遇到问题时,管理员需要通过模拟用户帐户来查看它。
提前致谢。
答案 0 :(得分:1)
您可以使用alanning:roles
而不是以用户身份登录,这需要他们的密码,而且总是禁止使用,而是允许管理员分配任何用户的角色,以便根据需要绘制视图用户的角色。
这需要一个设计良好的角色系统。
作为一个优点,您至少可以加载与您想要支持的用户相关联的文档。
这需要精心设计的文档和数据模型。
但一般来说,你应该专注于为组件编写好的测试(测试驱动开发)作为单元测试,集成测试和UI测试。
这将减少手动查看最终用户的需求。
通过创建像wiki或视频教程这样的良好知识库,可以减少最常见的最终用户问题。
即使最终用户端出现错误,我宁愿尝试实现一个设计良好的错误日志,允许用户自动创建错误的票证,其中也包括错误堆栈。
在登录用户之前,所有上述方法都会受到青睐。
答案 1 :(得分:1)
由于@Jankpunkt已经提到alanning-roles我可以添加一些你可以使用而无需安装任何外部包的东西。
只需在type
集合的profile
对象中保留users
密钥即可。然后定义一些类型,如1为super-admin,2为admin,3为general等。然后通过检查user.profile.type
键的值来检查特定操作的授权。
警告:确保您正在检查服务器端的类型。默认情况下,profile
字段可从客户端写入,因此如果要在配置文件对象中放置type
字段,请确保您不允许用户在客户端修改users
集合。
以下是如何限制用户集合中的客户端更新:
Meteor.users.deny({
update() { return true; }
});
在此处阅读有关角色和权限的更多信息: https://guide.meteor.com/accounts.html#roles-and-permissions
答案 2 :(得分:1)
您似乎想要模仿用户。这意味着您希望Meteor.userId
(或this.userId
取决于上下文)反映客户端和服务器上特定用户的_id
。
afaict执行此操作的唯一方法是以用户身份登录。大概你不想要求用户输入密码,所以你有几个选择:
您可能不想要求用户输入密码而您不需要。您需要做的就是预留Meteor.user.findOne(userId).services.password.bcrypt
,然后将密码重置为临时值,然后稍后恢复原始的bcrypt
值。
缺点是原始用户在您登录时无法登录。再加上它非常黑客。
扩展Meteor的Accounts
软件包,以更优雅的方式提供模拟功能。
您也可以查看validateLoginAttempt。文档不清楚失败的登录尝试是否可以被一个成功的登录尝试覆盖,但是如果它可以提供另一个途径来解决您的问题。