首页 > 其他分享 > @Validated 属性安全验证

@Validated 属性安全验证

时间:2023-09-02 19:35:12浏览次数:39  
标签:return 验证 ResponseDTO ResponseCodeConst ERROR wrap Validated 属性

在接口处进行属性的安全校验时,使用@Validated  【import org.springframework.validation.annotation.Validated;】时,需要以下步骤:

1.引入pom依赖

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

2.构建全局异常捕获类
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

@ResponseBody
@ExceptionHandler(Exception.class)
public ResponseDTO execeptionHandler(Exception e){
log.error("error:",e);
// http 请求方式错误
if (e instanceof HttpRequestMethodNotSupportedException) {
return ResponseDTO.wrap(ResponseCodeConst.REQUEST_METHOD_ERROR);
}
// 参数类型错误
if (e instanceof TypeMismatchException) {
return ResponseDTO.wrap(ResponseCodeConst.ERROR_PARAM);
}
// json 格式错误
if (e instanceof HttpMessageNotReadableException) {
return ResponseDTO.wrap(ResponseCodeConst.JSON_FORMAT_ERROR);
}
// 参数校验未通过
if (e instanceof MethodArgumentNotValidException) {
List<FieldError> fieldErrors = ((MethodArgumentNotValidException) e).getBindingResult().getFieldErrors();
List<String> msgList = fieldErrors.stream().map(FieldError :: getDefaultMessage).collect(Collectors.toList());
return ResponseDTO.wrap(ResponseCodeConst.ERROR_PARAM, String.join(",", msgList));
}
if (e instanceof BusinessException) {
return ResponseDTO.wrap(ResponseCodeConst.SYSTEM_ERROR,e.getMessage());
}
return ResponseDTO.wrap(ResponseCodeConst.SYSTEM_ERROR);
}
}

3.dto对象中进行设置安全校验规则
javax.validation.constraints
eg:
@ApiModelProperty("手机号")
@NotBlank(message = "手机号不能为空")
private String phone;

4.接口处使用
 @Validated进行校验
@PostMapping("/sys/user/register")
@ApiOperation(value = "用户注册")
public ResponseDTO register(@RequestBody @Validated UserRegisterDTO dto){
System.out.println(dto);
return ResponseDTO.succ();
}
5.实验截图

 

标签:return,验证,ResponseDTO,ResponseCodeConst,ERROR,wrap,Validated,属性
From: https://www.cnblogs.com/wlwtop/p/17674108.html

相关文章

  • elementui 长表单验证滚动到首个错误位置
    this.$refs['form'].validate(valid=>{if(valid){//验证通过}else{//验证失败this.$nextTick(()=>{letisError=document.getElementsByClassName('is-error') isError[0].......
  • 基于阿里云服务实现短信验证码功能
    前言:阿里云短信服务是一项基于云计算和大数据技术的企业级短信平台服务。它能够为企业和开发者提供高可用、高性能、高稳定性的短信发送服务,可以快速地将各类业务通知、验证码、营销推广等信息发送给用户。在我们经常登录一些系统或者APP时候,经常会遇到其他登录登录方式——短信验......
  • GIS进行多个栅格属性组合绘图
    最近希望借鉴LCZ局地气候分区的方法进行空间耦合关系的制图,使单个像元内能够包括不同类型的属性信息,例如“人口密度高—GDP低—POI密度高”的形式。并且基础数据是栅格,记录一下操作过程。1.对栅格进行重分类这一步骤不再详细叙述,将栅格重分类为不同的等级(高中低)2.对多个栅格进......
  • 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
    [导读] 一摘要本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式其中DOM属性和元素属性的区分值得大家学习二前言通过前面几章我们已经能够完全控制jQuery包装集了,无论是通过选择器选取对象,或者从包一.摘要本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS......
  • 解决方案 | tk.entry数字验证(输入框如何保证只能输入数字)
      fromtkinterimport*root=Tk()#创建文本框entry=Entry(root)entry.pack()#设置文本框只能输入数字entry.config(validate="key",validatecommand=(root.register(lambdaP:P.isdigit()orP==""),"%P",),)root.mainlo......
  • 验证邮箱的正则表达式
    Stringpat="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{3,}$"; Patternp=Pattern.compile(pat); Matcherm=p.matcher(email); //邮箱格式不对 if(!m.matches()){ Toast.makeText(context,"邮箱格式不正......
  • OrCAD元件出现两种不同属性,消除其中一个属性
    由于某种原因导致OrCAD原理图元件出现A、B两种不同的属性,如下图所示,位号与封装都不一样。根据个人有限的经验,整个DSN要么都选择A属性,要么都选择B属性。当出现A、B属性只有封装不同,需要知道当前使用的是哪个属性时,可通过导出BOM,查看对应位号的封装是什么,来确定当前使用的是什么......
  • ElementUI 全局设置组件的默认属性
    importElementUIfrom'element-ui'Element.Input.props.clearable.default=true;JS复制全屏原生属性通常情况下,以maxlength属性为例importElementUIfrom'element-ui'constrender=ElementUI.Input.render;ElementUI.Input.render=function(){......
  • TStringList 常用方法与属性
    TStringList常用方法与属性:2var3List:TStringList;4i:Integer;5begin6List:=TStringList.Create;7List.Add('Strings1');{添加}8List.Add('Strings2');9List.Exchange(0,1);{置换}10List.Insert(0......
  • 第一部分 1.1 信息与信息技术 1.1.1信息与数据 信息的概念: 一般认为:信息是在自然界
    第一部分1.1信息与信息技术1.1.1信息与数据信息的概念: 一般认为:信息是在自然界、人类社会和人类思维活动中普遍存在的一切物质和事物的属性。 信息能够用来消除事物不确定的因素数据的概念: 是指存储在某种媒体上可以加以鉴别的符号资料。(符号,不仅指文字、字母和数字等,还包括......