要不要开发一个不需要用户密码就直接登录用户账号的功能,以测试用户提交的问题?

2020-03-10 12:21:02 +08:00
 echohn

最近几次碰见一个情况,就是用户反馈,界面数据显示的不对。

我从后台数据库查,应该是没有问题的。可能问题出现于前端的一些处理逻辑上。

现在的问题是,我觉得可能直接登录用户的账号在界面上看,比较好排查问题。

因为用户密码是密文存储的,我不能动。所以我在想,是不是可以开发一个后台功能,点击就可以切换成该用户登录系统,从而更直观的排查问题。

我这个想法不一定好,主要是我觉得可能会有安全风险。

不知道大家有没有遇见过类似的情况,有没有什么好的方式来解决类似的问题?

2470 次点击
所在节点    程序员
18 条回复
ebingtel
2020-03-10 14:07:37 +08:00
登录历史里面 记录用户的 cookies……然后 为所欲为
oott123
2020-03-10 14:14:09 +08:00
这种功能很常见,叫 Impersonate。比如 gitlab 就有这个
zhensjoke
2020-03-10 15:44:17 +08:00
数据库改密码。。。然后自己登陆测试。。之后再改回用户原来的。

如果每个用户加密不一样当我没说。。
marcomarco
2020-03-10 15:49:52 +08:00
复制一份他的数据,到你的测试账号上看
lishunan246
2020-03-10 16:21:00 +08:00
返回的结果打到日志里,日志没问题就说明是前端的锅。
ccc825
2020-03-10 16:24:00 +08:00
我这是特意写了前置方法,如果请求带了 user_id 就直接按这个 id 的用户登录来读数据
yhxx
2020-03-10 16:29:14 +08:00
还有这种操作?
我一直以为这种事情应该靠监控、日志之类的来查。。。
imhxc
2020-03-10 16:33:30 +08:00
很正常,大厂一些部门有你说的这种类似的平台。
mokeyjay
2020-03-10 16:37:18 +08:00
很正常,叫做 ghostlogin 之类的,比如 laravel 就有个包是专门干这个的 https://github.com/viacreative/sudo-su
但是权限一定得管好,例如要先检测到当前登录的用户是超级管理员,才允许使用 ghostlogin
learnshare
2020-03-10 16:59:46 +08:00
通常不建议直接拿用户账户登录,用户账户及功能应该只有用户本人可以操作,这是对用户的尊重
可以实现一个授权 /邀请功能,用户授权管理员,然后管理员临时变成用户的“影子”登录,并获得用户同样的权限和功能。但执行操作时注意标明是“影子”,而非用户本人

具体实现就很多样化了,核心是验证管理员身份,以及所有功能和权限都是指定用户的“影子”
wangxiaoaer
2020-03-10 17:10:21 +08:00
典型的 XY 问题,解决办法不是让用户上传个截图就完事了吗?
sudden
2020-03-10 17:18:03 +08:00
这个问题挺可怕的,涉及到隐私了,君子不立危墙之下,建议你不要这样做(领导要求的话当我没说)
Kr98
2020-03-10 17:33:50 +08:00
楼主可以直接看数据库内容,说明用户本身就没有隐私。
只是简单测试用途的话,加一个超级密码,登录逻辑里面多加一个判断。
echohn
2020-03-11 11:59:17 +08:00
@sudden 还好还好,我这里是对 B 的,都是业务数据,涉及到个人隐私的字段,可能只有一个手机号。。。
imdong
2020-03-11 12:06:42 +08:00
之前公司内部业务系统,经常有业务员啥的弄错,不会用,而 admin 并没有操作权限,为了方便调试,加过这样的功能。
如果是 admin 登录,就添加特殊的 super 标记,然后可以加载任意部门任意用户,并可以任意切换。
cassiezhang
2020-05-12 14:56:31 +08:00
我们公司是做 saas 服务,也碰到了类似的问题,楼主最终选择什么方案呢?
cassiezhang
2020-05-12 14:56:56 +08:00
@ccc825 能具体说说么?
echohn
2020-05-23 17:17:52 +08:00
@cassiezhang 当时最后选择了自己实现 ghost_login 的方式。

新增了 ghost_login 的接口,当 superadmin 登录时,可访问该接口,跳过用户登录,直接为所选择要切换的用户颁发新的 token (我这里是 JWT 认证方式)。

前端收到请求后,覆盖自己的 token,并在本地标记一个 ghost flag,用于页面显示和一些敏感功能的访问限制。

PS:我在系统配置中增加了开关,打开时才能使用这个接口,用完就关上,也算是一层安全防护吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/651469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX