跳至主要內容

用户维护

2023年4月15日大约 3 分钟功能介绍功能介绍开发运营系统用户维护

用户维护功能用于开发者或运营者在后台创建用户账号,此界面操作的是def_user表。

提示

用户和员工是2个概念,用户只全局唯一的,员工的在某个企业内唯一的,一个用户可以归属于多个企业,在企业内部称为员工。 用户表存的的跟账号相关的信息,员工表存的是跟员工相关的信息。

涉及的表

重要字段解释

  1. nick_name:昵称。员工表(base_employee)中有员工姓名(name),用户表(def_user)有昵称(nick_name)。系统右上角显示的是用户的昵称。

  2. username:全局唯一用户名,用于登录系统。正则规则:大写、小写、数字、下划线 任意2种组合。

  3. email:全局唯一邮箱,用于登录系统。

  4. mobile:全局唯一手机号,用于登录系统。

  5. id_card:全局唯一身份证号,用于登录系统。

  6. wx_open_id:微信openId。预留字段。

  7. dd_open_id:钉钉OpenId。预留字段。

  8. password_error_last_time:最后一次输错密码时间。配合{passwordErrorLockUserTime}参数,计算用户锁定的时长。

  9. password_error_num:密码错误次数。输错{maxPasswordErrorNum}次后,账号将被锁定{passwordErrorLockUserTime}。

    # common.yml
    lamp:
      system:
        maxPasswordErrorNum: 10  # 密码最大输错次数  小于0不限制
        passwordErrorLockUserTime: "0"  # 密码错误{maxPasswordErrorNum}次后,锁定用户时间[0: 今天结束;60m: 60分钟后;2h: 2小时后;4d: 4天后; 2w: 2周后;3M: 3个月后;5y: 5年后]
    
  10. password_expire_time:密码过期时间。满足某些等保要求,用于密码强制过期。

    // AbstractTokenGranter
    // 用户锁定
    Integer maxPasswordErrorNum = systemProperties.getMaxPasswordErrorNum();
    Integer passwordErrorNum = Convert.toInt(user.getPasswordErrorNum(), 0);
    if (maxPasswordErrorNum > 0 && passwordErrorNum >= maxPasswordErrorNum) {
        log.info("[{}][{}], 输错密码次数:{}, 最大限制次数:{}", user.getNickName(), user.getId(), passwordErrorNum, maxPasswordErrorNum);
    
        LocalDateTime passwordErrorLockTime = DateUtils.conversionDateTime(systemProperties.getPasswordErrorLockUserTime());
        log.info("passwordErrorLockTime={}", passwordErrorLockTime);
        if (passwordErrorLockTime.isAfter(user.getPasswordErrorLastTime())) {
            // 登录失败事件
            String msg = StrUtil.format("密码连续输错次数已达到{}次,用户已被锁定~", maxPasswordErrorNum);
            SpringUtils.publishEvent(new LoginEvent(LoginStatusDTO.fail(user.getId(), LoginStatusEnum.USER_ERROR, msg)));
            return R.fail(msg);
        }
    }
    
  11. salt:密码盐。

  12. password:密码。数据库中存储的密码为明文密码 + 随机盐,然后sha256加密。

    // DefUserServiceImpl
    SecureUtil.sha256(defUser.getPassword() + defUser.getSalt())
    
  13. state:状态;[0-禁用 1-启用]

    用户禁用后,将不能登录系统

    提示

    用户禁用、员工禁用、企业禁用之间的关系

    1. 用户禁用后,不能登录系统
    2. 员工被某个企业禁用后,员工不能切换到该企业
    3. 企业被禁用后,该企业不再可用,且企业下的所有员工,不能切换到该企业

功能讲解

  1. 新增: 输入用户名、手机号、昵称等信息后,保存数据,会像def_user表插入一条数据。用户名、手机、邮箱、身份证需要保证全局唯一,4个字段均可以用于登录系统。

    新增的用户密码采用全局统一配置的默认密码。默认密码通过 common.yml 文件的 lamp.system.defPwd 参数修改。

  2. 编辑:修改def_user 表的数据

  3. 复制:复制一条数据

  4. 重置密码:将用户的密码重置为common.yml 文件中配置的默认密码。

    lamp:
      system:
        # 默认用户密码
        defPwd: '123456'
    
  5. 删除:物理删除用户

  6. 查看:查看用户的详细信息

👆🏻👆🏻👆🏻上面是评论区,对系统、本页文档什么疑问,可以在评论区留言。
❗️❗️❗️若评论区无法显示,请使用"手机热点"或"科学上网"。
5.0.4已发布: