java学习--黑马SpringBoot3课程个人总结-2024-01-31

本文介绍了如何在SpringBoot项目中使用参数校验(@Pattern)、创建全局异常处理器、处理登录逻辑,并探讨了JWT令牌的结构和安全性。
摘要由CSDN通过智能技术生成

1. 参数校验

三步走

  1. 引入Spring Validation依赖
    validation依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2.在参数前面加@Pattern注解

public Result register(@Pattern(regexp = "^\\S{5,16}") String username,
                           @Pattern(regexp = "^\\S{5,16}") String password)

等同于下面的代码

 if (username!=null && username.length()>=5 &&
        username.length()<=16 && password!=null &password.length()<=16)

3.在Controller类中添加@Valiated注解

2.参数校验后返回的错误信息如何统一

提供一个全局异常处理器

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public Result handlerException(Exception e){
        e.printStackTrace();
        //判断返回的消息是否带有信息
        //借助Spring提供的StringUtils工具类
        return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage():"操作失败");
    }
}

3.登录逻辑的实现

  //登录的实现
    @PostMapping("/login")
    public Result<String> login(@Pattern(regexp ="^\\S{5,16}$") String username,
                        @Pattern(regexp ="^\\S{5,16}$")String password){
        //根据用户名查询user
        User  loginUser= userService.findByUserName(username);
        //判断是否查到
        if (loginUser==null){
         return Result.error("用户名不存在");
        }
        //判断密码是否正确
        //对传进来的参数进行加密,然后进行比对
        if (Md5Util.getMD5String(password).equals(loginUser.getPassword())){
            return Result.success("登录成功");
        }

        return Result.error("密码错误");
    }

4.JWT令牌

  • jwt ,JSON Web Token
  • 定义了一种简洁的,自包含的格式,用于通信双方以json数据格式安全的传输信息
由三部分组成
  • 第一部分,header,记录令牌类型,签名算法等
  • 第二部分,Payload,有效再喝,携带一些自定义信息,默认信息等,例如{“id”,“1”,“username”,“tom”},不可以在这部分放一些敏感数据,因为这里使用的Base64编码,任何专业人员都可以进行解码或者编码。
  • 第三部分,Signature(签名),防止token被篡改,确保安全性,将header,payload,加入指定的秘钥通过指定的签名算法计算而来
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值