V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjsxwc
V2EX  ›  程序员

在已有系统上增加子账户功能,什么办法好?

  •  
  •   zjsxwc ·
    zjsxwc · 2018-05-15 08:42:52 +08:00 · 3049 次点击
    这是一个创建于 2383 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前系统是一个账户操作他自己的内容,现在客户想要有子账户功能,让他的员工来登录处理他账户里的内容,应该如何增加子账户功能?

    目前考虑两个办法:

    1. 由于系统已经有了通过手机扫码登录,有个地方标记了“登录方式”,那么我们可以拓展这个“登录方式”为“子账户”登录,但登录的用户还是主账户,这样改动最小。

    2. 和主账户一样,把子账户和主账户关联起来,然后所有对账户鉴权的地方也要判断子账户有没有权限,改动会有点多。

    应该用哪个合适?

    第 1 条附言  ·  2018-06-02 11:05:06 +08:00
    目前的解决方案是:

    结合由于系统已经有了通过手机扫码登录,有个地方标记了“登录方式”,那么我们可以拓展这个“登录方式”为“子账户”登录,但登录的用户还是主账户,这样改动最小;但是会在每次接口请求之初子账户鉴权系统拦截判断这个子账户有没有访问权限,来实现精细的权限控制。
    8 条回复    2020-12-07 10:06:11 +08:00
    sanjusss
        1
    sanjusss  
       2018-05-15 08:49:21 +08:00
    花生壳用的是类似 1 的方法,不过正好反过来,是用主账号管理子账号。
    zjqzxc
        2
    zjqzxc  
       2018-05-15 08:51:13 +08:00
    方案 2。如果权限控制设计不是太大坑的话,这种方式改动并没有想象中的那么多。

    方案 1 如果哪天用户说子账户的权限需要限制的时候就该哭了
    liuxey
        3
    liuxey  
       2018-05-15 08:55:36 +08:00
    长期项目选 2,短平快项目选 1
    zjsxwc
        4
    zjsxwc  
    OP
       2018-05-15 09:05:34 +08:00
    @zjqzxc @liuxey

    2 的改动真的有点多,感觉整个项目都要重写一遍,数据库结构,订单系统,聊天系统,我要吐血了。。

    我先用 1 应付下吧,权限控制也可以简单做下不难
    fortunezhang
        5
    fortunezhang  
       2018-05-15 09:54:30 +08:00
    子员工是全部权限吗? 如果是的话,你可以登录的时候让它登录进去,session 里面的 name 是子账户的名字,session 里面的 id,是父 id,这样所有权限都跟 id 绑定在一起,就可以改动很小了。
    如果子员工没有全部权限的话,那就尴尬了,你需要一点点的改,还要做权限列表。
    paragon
        6
    paragon  
       2018-05-15 10:14:36 +08:00
    其实设计的时候就应该 account 关联 user 表
    realpg
        7
    realpg  
       2018-05-15 21:16:47 +08:00
    如果整站系统都是你写的 那么做 2 的改造并不太费劲
    IBN5100
        8
    IBN5100  
       2020-12-07 10:06:11 +08:00
    我也遇到了这个问题 使用的 spring security 前后端分离的 但是如果仅仅使用主账户登录的话 返回的都是同一个 token 无法区分出当前用户的子用户 你有遇到过这个问题吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:37 · PVG 14:37 · LAX 22:37 · JFK 01:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.