NC65后台手动创建用户并设置初始密码

new 一个用户VO,并向VO中set必要的字段值

UserVO userVO = new UserVO();
userVO.setDr(0);
userVO.setEnablestate(2); //启用状态 1=未启用,2=已启用,3=已停用
userVO.setIdentityverifycode("staticpwd"); //认证类型
userVO.setIsca(new UFBoolean("N")); //是否CA用户
userVO.setIsLocked(new UFBoolean("N")); //是否锁定
userVO.setPk_org(pk_org); //所属组织
userVO.setPk_base_doc(pk_psndoc); //身份
userVO.setPwdlevelcode("update"); //密码安全级别
userVO.setSystype("1"); //所属系统
userVO.setUser_type(1); //用户类型 0=集团管理员,1=普通用户,2=帐套管理员
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String datetime = df.format(new Date());
userVO.setAbledate(new UFDate(datetime)); //生效日期
userVO.setBase_doc_type(0); //身份类型 0=员工,1=客户,2=供应商,3=审计,4=外部系统,5=开发者
···

以上都不是重点,重点是设置默认密码。
NC65通过nc.vo.uap.rbac.util.RbacUserPwdUtil.getEncodedPassword(UserVO, String)方法生成密码。

这里需要注意的是,第一个参数UserVO,要求一定要存在主键,也就是说,第一步new出来的UserVO一定要先set设置主键的值,才能用来生成密码。

这是nc.vo.uap.rbac.util.RbacUserPwdUtil.getEncodedPassword(UserVO, String)方法的源码,我们可以看到在生成密码之前会先校验StringUtils.isBlank(user.getPrimaryKey())是否为空。

/*     */   public static String getEncodedPassword(UserVO user, String expresslyPWD)
/*     */     throws BusinessException
/*     */   {
/* 160 */     if ((user == null) || (StringUtils.isBlank(user.getPrimaryKey())))
/* 161 */       throw new BusinessException("illegal arguments");
/* 162 */     if ((StringUtils.isNotBlank(expresslyPWD)) && (expresslyPWD.startsWith("U_U++--V"))) {
/* 163 */       return expresslyPWD;
/*     */     }
/* 165 */     String codecPWD = DigestUtils.md5Hex(user.getPrimaryKey() + StringUtils.stripToEmpty(expresslyPWD));
/*     */     
/* 167 */     return "U_U++--V" + codecPWD;
/*     */   }

我是通过提前set主键的方式再生成密码的

SequenceGenerator generator = new SequenceGenerator();
String generate_id = generator.generate();
userVO.setCuserid(generate_id); //用户主键

之后生成密码

userVO.setUser_password(RbacUserPwdUtil.getEncodedPassword(userVO, "1qaz2wsx")); //密码

最后insert到库中

这里也有个地方要注意一下,因为已经提前设置VO主键了,在insert插入到库中时,要选择带主键的方式插入,否则用户生成后,登陆时填写密码就验证不通过。具体原因可以参考源码(验证的时候也会根据VO主键进行验证)。

new BaseDAO().insertVOWithPK(userVO);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值