目录
概述
在开发后端接口时,数据的直接暴露可能会导致安全问题。为了应对这种情况,我们需要在访问接口时进行拦截验证,以确保只有经过身份验证的用户才能访问数据。为实现这一目的,我们需要编写一个拦截器,用于检查每次请求中是否携带有效的token(即身份验证令牌)。只有当用户携带有效token时,才能进行数据访问操作;否则,将对请求进行拦截并禁止访问敏感数据。
通过编写拦截器实现身份验证,我们能够提高系统的安全性并保护数据免受未经授权的访问。这种做法有助于规避潜在的安全风险,有效保障系统的信息安全。因此,在开发过程中,拦截器的设计和使用至关重要,可以为系统的稳定性和安全性提供有效保障。
考虑到有的朋友是小白,我从头开始讲起,不需要的朋友可以直接跳到第4步开始~
前提:我们需要知道的文件的用处
1.controller文件:控制器负责处理用户请求,并返回响应,充当了前端与后端之间的桥梁
2.service文件:服务层,用于逻辑的书写,如登录注册
3.entity文件:实体类,通常映射到数据库中的表,每个实体类对应一个数据库表
4.mapper文件:用于定义SQL查询和实体类之间的映射
5.exception文件:异常处理,自定义异常类可以提供更详细的错误信息
6.common文件:存放一些通用的工具类、常量、配置
第1步:数据库的连接
1.这是我创建的一个比较简单的数据表
- 数据库名:test_data
- 数据表名:user
2.打开application.yml文件,配置数据库的连接
#用来配置端口,和数据库的连接
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3308/test_data?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8 #本地数据的端口号和user是我创建的数据库
username: root
password: 123456
3.创建实体类(entity文件夹中)
创建一个User.java编写以下代码
@Data
public class User {
private Integer _id;
private String username;
private String password;
private Integer age;
}
第2步:定义一个标准化响应对象的类
用处:用于在Spring应用程序中返回操作的结果。这样的设计有助于保持响应的一致性,并且便于前端处理响应数据。
首先在common文件夹中创建result.java文件并编写以下代码
@Getter
@Setter
@AllArgsConstructor //所有属性的构造函数
@NoArgsConstructor //无参构造
@Builder //建造者模式创建Result对象
public class Result {
public static final String CODE_SUCCESS="200";
public static final String CODE_AUTH_ERROR="401";
public static final String CODE_SYS_ERROR="500";
private String code;
private String msg;
private Object data;
public static Result success(){
return new Result(CODE_SUCCESS,"请求成功",null);
}
public static Result success(Object data){
return new Result(CODE_SUCCESS,"请求成功",data);
}
public static Result error(String msg){
return new Result(CODE_SYS_ERROR,msg,null);
}
public static Result error(String code,String msg){
return new Result(code,msg,null);
}
public static Result error(){
return new Result(CODE_SYS_ERROR,"系统错误",null);
}
}
第3步:编写请求数据库数据代码
1.在controller文件夹新建UserController.java文件并编写
@CrossOrigin //跨域请求
@RestController //这类是一个RESTful风格控制器
@RequestMapping("/user") //请求路径
public class UserController {
@Autowired //示将UserService类的