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