代码之家  ›  专栏  ›  技术社区  ›  Javascript Hupp Technologies

允许管理员用户以其他用户身份登录

  •  0
  • Javascript Hupp Technologies  · 技术社区  · 8 年前

    有没有办法登录其他用户的admin用户帐户?

    当前身份验证基于 Meteor帐户

    我看到了 this post 但现在根本不起作用。

    该功能对我们来说很重要,因为当用户在系统中出现问题时,管理员需要通过模拟用户帐户来查看。

    提前谢谢。

    3 回复  |  直到 8 年前
        1
  •  1
  •   Michel Floyd    8 年前

    看来你想 冒充 用户。这意味着你想要 Meteor.userId (或 this.userId 根据上下文)反映 _id 客户端和服务器上的特定用户。

    afaict唯一的方法是以用户身份登录。大概您不想向用户询问密码,因此您有两个选择:

    1. 保存他们的现有密码,用您选择的密码(临时)替换,然后在模拟完他们的帐户后,恢复他们的现有密码。

    您可能不想向用户询问密码,也不需要这样做。你所需要做的就是把它放在一边 Meteor.user.findOne(userId).services.password.bcrypt ,然后将密码重置为临时值,然后恢复原始值 bcrypt 以后再说。

    缺点是,当您登录时,原始用户将无法登录。而且它真的很粗糙。

    1. 扩展Meteor的 Accounts 包以更优雅的方式提供模拟功能。

    2. 你也可以看看 validateLoginAttempt 。文档不清楚是否可以用成功的登录尝试覆盖失败的登录尝试,但如果可以,则将提供另一种解决问题的途径。

        2
  •  1
  •   Jankapunkt    8 年前

    您可以使用 alanning:roles 并允许管理员分配任何用户的角色,以便根据用户的角色绘制视图。

    这需要一个设计良好的角色系统。

    另外,您至少可以加载与您想要支持的用户相关联的文档。

    这需要一个设计良好的文档和数据模型。

    但一般来说,您应该专注于为组件编写良好的测试(测试驱动开发),如单元测试、集成测试和UI测试。

    这将大大减少作为最终用户手动查看应用程序的需要。

    通过创建良好的知识库(如wiki或视频教程),可以减少最常见的最终用户问题。

    即使最终用户端发生错误,我也宁愿尝试实现一个设计良好的错误日志,允许用户自动创建错误记录单,其中还包括错误堆栈。

    在以用户身份登录之前,以上所有方法都是受欢迎的。

        3
  •  0
  •   Mostafiz Rahman    7 年前

    正如@Jankpunkt已经提到的 alanning-roles 我可以添加一些无需安装任何外部软件包即可使用的内容。
    只要保持 type 输入 profile 的对象 users 收集然后定义一些类型,如1表示超级管理员,2表示管理员,3表示常规等。然后通过检查 user.profile.type 钥匙

    注意事项 :确保您正在服务器端检查类型。默认情况下 轮廓 字段可从客户端写入,因此如果要 类型 配置文件对象中的字段确保不允许用户修改 用户 客户端中的集合。 以下是如何在users集合中限制客户端更新:

    Meteor.users.deny({
      update() { return true; }
    });
    

    在此处阅读有关角色和权限的更多信息: https://guide.meteor.com/accounts.html#roles-and-permissions