最近几次碰见一个情况,就是用户反馈,界面数据显示的不对。
我从后台数据库查,应该是没有问题的。可能问题出现于前端的一些处理逻辑上。
现在的问题是,我觉得可能直接登录用户的账号在界面上看,比较好排查问题。
因为用户密码是密文存储的,我不能动。所以我在想,是不是可以开发一个后台功能,点击就可以切换成该用户登录系统,从而更直观的排查问题。
我这个想法不一定好,主要是我觉得可能会有安全风险。
不知道大家有没有遇见过类似的情况,有没有什么好的方式来解决类似的问题?
|      1ebingtel      2020-03-10 14:07:37 +08:00 登录历史里面 记录用户的 cookies……然后 为所欲为 | 
|  |      2oott123      2020-03-10 14:14:09 +08:00  2 这种功能很常见,叫 Impersonate。比如 gitlab 就有这个 | 
|      3zhensjoke      2020-03-10 15:44:17 +08:00 数据库改密码。。。然后自己登陆测试。。之后再改回用户原来的。 如果每个用户加密不一样当我没说。。 | 
|      4marcomarco      2020-03-10 15:49:52 +08:00 复制一份他的数据,到你的测试账号上看 | 
|  |      5lishunan246      2020-03-10 16:21:00 +08:00 via Android 返回的结果打到日志里,日志没问题就说明是前端的锅。 | 
|      6ccc825      2020-03-10 16:24:00 +08:00 我这是特意写了前置方法,如果请求带了 user_id 就直接按这个 id 的用户登录来读数据 | 
|  |      7yhxx      2020-03-10 16:29:14 +08:00 还有这种操作? 我一直以为这种事情应该靠监控、日志之类的来查。。。 | 
|      8imhxc      2020-03-10 16:33:30 +08:00 很正常,大厂一些部门有你说的这种类似的平台。 | 
|  |      9mokeyjay      2020-03-10 16:37:18 +08:00  1 很正常,叫做 ghostlogin 之类的,比如 laravel 就有个包是专门干这个的 https://github.com/viacreative/sudo-su 但是权限一定得管好,例如要先检测到当前登录的用户是超级管理员,才允许使用 ghostlogin | 
|  |      10learnshare      2020-03-10 16:59:46 +08:00  1 通常不建议直接拿用户账户登录,用户账户及功能应该只有用户本人可以操作,这是对用户的尊重 可以实现一个授权 /邀请功能,用户授权管理员,然后管理员临时变成用户的“影子”登录,并获得用户同样的权限和功能。但执行操作时注意标明是“影子”,而非用户本人 具体实现就很多样化了,核心是验证管理员身份,以及所有功能和权限都是指定用户的“影子” | 
|      11wangxiaoaer      2020-03-10 17:10:21 +08:00 via Android 典型的 XY 问题,解决办法不是让用户上传个截图就完事了吗? | 
|  |      12sudden      2020-03-10 17:18:03 +08:00 这个问题挺可怕的,涉及到隐私了,君子不立危墙之下,建议你不要这样做(领导要求的话当我没说) | 
|  |      13Kr98      2020-03-10 17:33:50 +08:00 楼主可以直接看数据库内容,说明用户本身就没有隐私。 只是简单测试用途的话,加一个超级密码,登录逻辑里面多加一个判断。 | 
|  |      15imdong      2020-03-11 12:06:42 +08:00 via iPhone 之前公司内部业务系统,经常有业务员啥的弄错,不会用,而 admin 并没有操作权限,为了方便调试,加过这样的功能。 如果是 admin 登录,就添加特殊的 super 标记,然后可以加载任意部门任意用户,并可以任意切换。 | 
|      16cassiezhang      2020-05-12 14:56:31 +08:00 我们公司是做 saas 服务,也碰到了类似的问题,楼主最终选择什么方案呢? | 
|      17cassiezhang      2020-05-12 14:56:56 +08:00 @ccc825 能具体说说么? | 
|  |      18echohn OP @cassiezhang 当时最后选择了自己实现 ghost_login 的方式。 新增了 ghost_login 的接口,当 superadmin 登录时,可访问该接口,跳过用户登录,直接为所选择要切换的用户颁发新的 token (我这里是 JWT 认证方式)。 前端收到请求后,覆盖自己的 token,并在本地标记一个 ghost flag,用于页面显示和一些敏感功能的访问限制。 PS:我在系统配置中增加了开关,打开时才能使用这个接口,用完就关上,也算是一层安全防护吧。 |