若依框架支持通过sys_user
表管理非系统用户,但需要结合user_type
字段进行扩展设计。以下是具体说明:
一、关于user_type
字段的用途
字段定义
该字段在sys_user
表中定义为varchar(2)
类型,默认值为'00'
,注释为“用户类型(00系统用户)”。其核心作用是区分用户身份,例如:
00
:系统用户(默认值,用于后台管理员)01
:普通业务用户(如注册会员、外部用户)02
:第三方系统对接用户(如API调用账号)
业务扩展逻辑
开发者可通过该字段实现用户分类权限控制。例如:在数据权限切面(
DataScopeAspect
)中,根据user_type
动态拼接SQL条件在角色分配时,限制非系统用户只能获取特定角色权限
二、非系统用户的操作支持
用户表复用可行性
若依默认的sys_user
表支持存储非系统用户,但需注意:字段扩展性:可通过添加自定义字段(如会员等级、外部用户标识)满足业务需求
权限隔离:需在
@DataScope
注解中配置deptAlias
和userAlias
,通过部门/用户表关联实现数据隔离
典型实现方式
角色映射:为非系统用户创建独立角色(如"external_user"),并在
sys_role
表中设置data_scope
为5
(仅本人数据权限)接口扩展:通过自定义
UserDetailsService
实现多用户类型认证,结合user_type
字段区分登录逻辑
三、注意事项
数据权限冲突
若混合使用系统用户和非系统用户,需特别注意:默认角色
sys_admin
拥有全数据权限(data_scope=1
)非系统用户角色应设置为
data_scope=5
(仅本人数据)或自定义范围
代码生成适配
使用若依代码生成功能时,需在实体类中显式声明user_type
字段,并在@DataScope
注解中配置关联表别名
建议实现步骤:
在
sys_user
表中扩展user_type
枚举值(如新增01
为外部用户)创建对应的角色并设置
data_scope
限制在业务Service层添加
@DataScope(deptAlias="d", userAlias="u")
注解在MyBatis的XML映射文件中添加
${params.dataScope}
条件
通过以上配置,可实现在同一用户表中区分系统用户与非系统用户,并保障数据权限隔离。若需更彻底隔离,可参考若依的多用户表登录方案