JWT(JSON Web Token)是一种用于在网络应用间传递信息的开放标准(RFC 7519)。它以 JSON 格式存储被加密后的信息,通常用于验证和身份认证。这是token验证的一种令牌。叫身份验证令牌。在前后端分离的架构中常用。
出现原因:在以前用cookie认证时候,会把状态信息什么的储存在服务器里面,随着用户越来越多,会造成服务器的压力。那么jwt就出来了,你什么时候来,我什么时候给你颁发一个认证授权访问的令牌就好,不会储存在服务器里面。啪,给你盖章通过认证了,你可以带着这个令牌请求去访问我们服务器的资源了。
基于传统的session认证:
暴露的问题:
基于Jwt认证:
参考文章:
https://blog.csdn.net/m0_57752520/article/details/125785908
https://blog.csdn.net/weixin_41636858/article/details/129223414
POJO:即Plain Ordinary Java Object,普通的JavaBeans。pojo是包含了entity、vo和dto的,pojo类有个很明显的特点,没有继承,也没有实现,没有其他方法,有的只是属性以及getter和setter方法,这一类统称为pojo类。
Entity:entity类中的每一个字段都是与数据库表的字段相对应的。(与数据库表字段对应)
VO:即Value Object,值对象,就是java页脚表现层对象,就是可以直接将该对象转为JSON字符串传给前端的对象,或者可以说vo里面存的就是前端要展示的字段。(后端返回给前端,前端需要展示的数据)
DTO:即Data Transfer Object,数据传输对象,就是将entity与vo进行互相转换的对象,很多时候前端需要的参数在数据库的表里存的是不一样的,比如数据库里有id,姓名,年龄,身份证,但是前端只需要姓名和年龄,又或者还需要一些别的字段,这时候就需要dto来进行转换了。(前端返回给后端,后端需要插入到数据库表中的数据)
Maven依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
User实体类:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.log4j.Log4j;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String id;
private String name;
private int age;
}
测试:
import com.example.testdata.pojo.User;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@Slf4j
class TestDataApplicationTests {
@Test
void contextLoads() {
}
@Test
public void testData(){
User user = new User();
user.setAge(12);
user.setId("123213");
user.setName("lushimeng");
System.out.println(user);
log.debug("debug");
log.info("info");
log.error("error");
log.warn("warn");
}
}
常用的几个注解:
@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor : 注在类上,提供类的全参构造
@NoArgsConstructor : 注在类上,提供类的无参构造
@Setter : 注在属性上,提供 set 方法
@Getter : 注在属性上,提供 get 方法
@EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法
@Slf4j:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
@Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;