SpringBoot开发系列--校验依赖:validation

在实验业务时,特别是在登录时,可能需要验证前端传送过来的帐号密码是否符合要求:例如假如帐号是手机号,我们需要验证手机号是否合法(长度是否是11位,等等),此外,如果前端传送的是对象,在后端接收时需要验证重要字段是否符合要求。

为什么有些可以在前端可以验证的,后端还要验证?

后端可以说是最后一道防线,所以不管前端时候进行了验证,后端在数据入库之前都要进行验证,这是出于安全的考虑。

今年天的主角:validation

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

添加完注解之后,我们可以在controller参数接收时进行对象验证,下面举例说明

例如我们在logincontroller中定义了一个login方法:

public RespBean doLogin(LoginVo loginVo){
//        log.info("{}",loginVo);
        RespBean respBean = iUserService.doLogin(loginVo);
        return respBean;
    }

loginVo为vo类,接受前端传来的用户名和密码,传统上我们验证用户和密码是否有效应该在service蹭,即在iUserService里面进行验证:

		String mobile = loginVo.getMobile();
        String password = loginVo.getPassword();
        if (StringUtils.isEmpty(mobile)||StringUtils.isEmpty(password)){
            return RespBean.error(RespBeanEnum.LOGIN_ERROR);
        }
        if(!ValidatorUtil.isMobile(mobile)){
            return RespBean.error(RespBeanEnum.MOBILE_ERROR);
        }

验证逻辑大致如上,进行非空验证,还有这里用户名是手机号,那么我们还需要:“ValidatorUtil.isMobile(mobile)来验证是否符合手机号规则:1开头,等等,ValidatorUtil.isMobile()实现如下:

private static final Pattern mobile_pattern = Pattern.compile("[1][3-9][0-9]{9}$");
    public static boolean isMobile(String mobile){
        if (StringUtils.isEmpty(mobile)){
            return false;
        }
        Matcher matcher = mobile_pattern.matcher(mobile);
        return matcher.matches();
    }

经过这么复杂的定义才完成对输入参数的验证,现在我们导入validation依赖后,可以通过在controller方法中添加@Valid关键字进行检查

 public RespBean doLogin(@Valid LoginVo loginVo){
//        log.info("{}",loginVo);
        RespBean respBean = iUserService.doLogin(loginVo);
        return respBean;
    }

标注@Valid之后,便会对LoginVo对象进行检查,需要检查哪些,可以在LoginVo对象中进行配置:

@Data
public class LoginVo {
    @NotNull//非空
    @IsMobile//自定义注解,检查手机号位数和有效性
    private String mobile;
    @NotNull
    @Length(min = 32)//设置密码长度检验,最小32为(md5加密之后)
    private String password;
}

关于自定义模板下次介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三喂树屋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值