[RuoYi]参数认证和ruoyi中的例子

一、参数认证

1.什么是参数认证

  概念: 参数验证是在程序中对输入参数进行检查和验证,以确保它们满足预期的格式、范围、条件或其他特定要求。这是一种提高程序健壮性和安全性的重要实践。

  在程序开发中,特别是在构建Web应用或API时,用户或其他系统可能提供数据作为输入参数。这些输入参数可能包括表单数据URL参数、请求体中的JSON数据等。参数验证的目的是防止不正确不安全不符合预期的数据进入程序,从而减少潜在的错误和安全风险。

  一些常见的参数验证方面包括:

  1. 数据类型验证: 确保参数是正确的数据类型,例如整数、字符串、日期等。
  2. 存在性检查: 确保必需的参数已经提供,并且不为空。
  3. 范围和条件检查: 验证参数是否在合理的范围内,或者是否满足特定的条件。
  4. 格式验证: 对于字符串类型的参数,确保其符合特定的格式,例如电子邮件地址、URL等。
  5. 枚举验证: 对于有限集合的参数,确保其值在预定义的选项中。

  在Web开发中,参数验证通常涉及到用户提交的数据。如果用户可以通过表单、URL参数或其他方式向应用程序提交数据,那么在接受和处理这些数据之前,需要进行充分的验证以防止潜在的安全漏洞,比如SQL注入、跨站脚本(XSS)等攻击。
  在很多现代的Web框架中,像SpringDjangoExpress等,都提供了内建的参数验证机制,使得开发者能够相对容易地添加验证规则,从而提高程序的稳定性安全性

2.RuoYi中的例子

进入若依后台管理系统,选择部门管理,选择修改部门
在这里插入图片描述
修改部门名称
在这里插入图片描述
修改为后,立刻提示**“不能为空”**
在这里插入图片描述
点击“确认”按钮,弹窗提示“部门名称部门名称长度不能超过30个字符”,同时开发者工具输出响应报错信息。
在这里插入图片描述
看后端报错log提示

11:20:42.360 [http-nio-8080-exec-65] WARN  o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - [logException,208] - Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.web.controller.system.SysDeptController.edit(com.ruoyi.common.core.domain.entity.SysDept): [Field error in object 'sysDept' on field 'deptName': rejected value [asdqweqwssssssssdasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssss]; codes [Size.sysDept.deptName,Size.deptName,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [sysDept.deptName,deptName]; arguments []; default message [deptName],30,0]; default message [部门名称长度不能超过30个字符]] ]
11:28:27.505 [http-nio-8080-exec-66] ERROR c.r.f.w.e.GlobalExceptionHandler - [handleMethodArgumentNotValidException,101] - Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.web.controller.system.SysDeptController.edit(com.ruoyi.common.core.domain.entity.SysDept): [Field error in object 'sysDept' on field 'deptName': rejected value [asdqweqwssssssssdasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssss]; codes [Size.sysDept.deptName,Size.deptName,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [sysDept.deptName,deptName]; arguments []; default message [deptName],30,0]; default message [部门名称长度不能超过30个字符]] 
org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.web.controller.system.SysDeptController.edit(com.ruoyi.common.core.domain.entity.SysDept): [Field error in object 'sysDept' on field 'deptName': rejected value [asdqweqwssssssssdasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssss]; codes [Size.sysDept.deptName,Size.deptName,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [sysDept.deptName,deptName]; arguments []; default message [deptName],30,0]; default message [部门名称长度不能超过30个字符]] 

log包括了 日志时间,接口地址,警告等级,相关报错信息等,这些都在ruoyi-admin的logback.xml 文件中有所规定,能够更好地让开发者理解找到错误源和出错原因。
此处就描述了GlobalExceptionHandler拦截器和SysRole对非法数据的异常捕获。

二、自己在若依中创建例子,并且实现参数认证

1.首先利用代码生成,生成表和页面

之前做过直接用之前的就好咯

在这里插入图片描述

2.通过观察源码,在代码生成页面添加相关注解

  观察源码
在这里插入图片描述
  找到相关文件,找到对象和属性以及注解
  根据英文猜测,两个注解分别实现“数据不为空”、“长度限制”等认证方式。
在这里插入图片描述
  直接复制、添加到自定义学生类中
在这里插入图片描述

3.测试代码是否实现了参数认证

  经过测试,当角色名称长度超过30时系统提示出错。
在这里插入图片描述
  名称为空时也会报错
在这里插入图片描述

前端部分并没有像若依源码,暨当数据为空时就在表单内部提示。这涉及到前端的代码,在此不赘述。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值