两个环境使用同一套用户,但是隔离用户角色的解决方案

场景:

两套环境中,如果需要公用同一个用户,但是用户关联的角色不想有关联。每个环境都有一个自己的用户角色,则可以参考本文章做配置。

  1. 在启动工程的yml文件中,指定auth.UserRoleRel模型的数据源,设计器和业务工程注意保持一致。
    pamirs:
    framework:
        data:
            ds-map:
                user: pamirs
                auth: pamirs
            model-ds-map:
                "[auth.UserRoleRel]": biz
  2. 指定biz数据源指向的数据库,业务环境A和业务环境B都使用biz数据源,但指向的数据库要改为不同的,这样,就会把用户角色关系表放到biz指定的不同数据库下,实现了用户角色隔离。
    pamirs:
    datasource:
        biz:
          driverClassName: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          url: jdbc:mysql://127.0.0.1:3306/demo_biz?useSSL=false&allowPublicKeyRetrieval=true&useServerPrepStmts=true&cachePrepStmts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
          username: root
          password: 123456
          initialSize: 5
          maxActive: 200
          minIdle: 5
          maxWait: 60000
          timeBetweenEvictionRunsMillis: 60000
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          poolPreparedStatements: true
          asyncInit: true

注意事项:

  1. 注意两个环境在新增角色时id不能一致。
  2. 这样配置需要自行隔离业务工程的角色
  3. 如果配置有错误会碰到一些异常,一下列举了可能的一些异常:

    • 点击登录报错:未找到入口应用或去权限访问
      去数据库找auth_user_role_rel这张表,查看里面有没有admin账号关联的角色,如果没有,自己手动新增一条数据,给admin一个管理员角色。参考下图:

    两个环境使用同一套用户,但是隔离用户角色的解决方案

    • 启动时执行删表sql或数据库有多个被删除的UserRoleRel表:_d_user_role_rel
      检查ds_map的数据源配置,有业务工程没有正确指定ds_map数据源。比如数据源配置不一致。

Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/api-sdk/19784.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
yexiu的头像yexiu数式员工
上一篇 2024年12月5日 下午5:56
下一篇 2024年12月10日 下午10:08

发表回复

登录后才能评论