SpringBoot实战:密码处理

Controller层

@Operation(summary = "保存或更新后台用户信息")
@PostMapping("saveOrUpdate")
public Result saveOrUpdate(@RequestBody SystemUser systemUser) {
    if(systemUser.getPassword() != null){
        systemUser.setPassword(DigestUtils.md5Hex(systemUser.getPassword()));
    }
    service.saveOrUpdate(systemUser);
    return Result.ok();
}

用户的密码通常不会直接以明文的形式保存到数据库中,而是会先经过处理,然后将处理之后得到的"密文"保存到数据库,这样能够降低数据库泄漏导致的用户账号安全问题。密码通常会使用一些单向函数进行处理,如下图所示

常用于处理密码的单向函数(算法)有MD5、SHA-256等,**Apache Commons**提供了一个工具类`DigestUtils`,其中就包含上述算法的实现。 

导入依赖

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
</dependency>

 MyBatis-Plus update strategy

使用Mybatis-Plus提供的更新方法时,若实体中的字段为`null`,默认情况下,最终生成的update语句中,不会包含该字段。若想改变默认行为,可做以下配置。

方法一:全局配置

在application.yml中配置以下参数 

mybatis-plus:
  global-config:
    db-config:
      update-strategy: <strategy>

上述`<strategy>`可选值有:`ignore`、`not_null`、`not_empty`、`never`,默认值为`not_null`

`ignore`:忽略空值判断,不管字段是否为空,都会进行更新
  
`not_null`:进行非空判断,字段非空才会进行判断
  
`not_empty`:进行非空判断,并进行非空串("")判断,主要针对字符串类型
  
`never`:从不进行更新,不管该字段为何值,都不更新

方法二:局部配置

在实体类中通过具体字段@TableField注解实现

@Schema(description = "密码")
@TableField(value = "password", updateStrategy = FieldStrategy.NOT_EMPTY)
private String password;

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

食懵你啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值