苍穹外卖Day01——解决总结1中存在的问题

前序章节

苍穹外卖Day01——总结1

解决总结1中存在的问题

  • 1. 什么是JWT
  • 2. POJO、Entity、VO、DTO
  • 3. Nginx(反向代理)
  • 4. @Data注解

1. 什么是JWT

JWT(JSON Web Token)是一种用于在网络应用间传递信息的开放标准(RFC 7519)。它以 JSON 格式存储被加密后的信息,通常用于验证和身份认证。这是token验证的一种令牌。叫身份验证令牌。在前后端分离的架构中常用

出现原因:在以前用cookie认证时候,会把状态信息什么的储存在服务器里面,随着用户越来越多,会造成服务器的压力。那么jwt就出来了,你什么时候来,我什么时候给你颁发一个认证授权访问的令牌就好,不会储存在服务器里面。啪,给你盖章通过认证了,你可以带着这个令牌请求去访问我们服务器的资源了。

基于传统的session认证

  • http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,下一次请求时,用户还要再一次进行用户认证才行。在第一次请求后服务器会创建一个会话即session,为了下一次能够识别到是哪个用户发出的请求,只能在服务器存储一份用户登录信息,这份登录信息会在响应时传给浏览器,即为一个sessionid存储在cookie中,这就是传统的基于session认证。

在这里插入图片描述

暴露的问题

  1. 每个用户认证一次就要记录一个sessionid,都保存在内存中,服务器的开销很大,且断电就丢失。
  2. session只存储在本服务器的内存中,在分布式应用场景中是非常不方便的,分布式通常是几个服务之间的调用,使用session认证就相应的限制了负载均衡的能力。
  3. 因为是基于cookie来进行用户的识别,cookie如果被截获,服务器就很容易受到跨站请求伪造的攻击。
  4. 前后端分离系统中更加的痛苦,sessionid1还只是一个特征值,表达的信息不够丰富。在后端应用是多节点部署场景中,就要实现session的共享机制,不太方便。也不方便集群应用。

基于Jwt认证:

  • 户进行认证,向服务器发送请求,服务器响应请求并进行认证,认证通过后生成JWT即token,响应给前端;后面的每次请求都携带JWT,服务器拦截请求验证token的有效性,正确的token执行业务逻辑响应数据,错误的token返回错误信息给前端,前端展示相应的的信息。

在这里插入图片描述

参考文章

https://blog.csdn.net/m0_57752520/article/details/125785908

https://blog.csdn.net/weixin_41636858/article/details/129223414

2. POJO、Entity、VO、DTO

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来进行转换了。(前端返回给后端,后端需要插入到数据库表中的数据)

3. Nginx(反向代理)

在这里插入图片描述

4. @Data注解

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 {@Testvoid contextLoads() {}@Testpublic 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方法即可;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336126.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊 Java 集合框架中的 ArrayList

其实 Java 集合框架也叫做容器&#xff0c;主要由两大接口派生而来&#xff0c;一个是 collection,主要存放对象的集合。另外一个是Map, 存储着键值对&#xff08;两个对象&#xff09;的映射表。 下面就来说说 List接口&#xff0c;List存储的元素是有序、可重复的。其下有三个…

影视视频知识付费行业万能通用网站系统源码,三网合一,附带完整的安装部署教程

在数字化时代&#xff0c;知识付费行业逐渐成为主流。人们对高质量内容的需求日益增长&#xff0c;越来越多的人愿意为有价值的知识和信息服务付费。为了满足这一市场需求&#xff0c;罗峰给大家分享一款全新的影视视频知识付费网站系统源码&#xff0c;为用户提供一站式的知识…

Real Fire Smoke

资产使用高分辨率的动画Spritesheet,并结合了Shuriken粒子系统。具有3种风格的火焰和爆炸。 效果分为7类。 主要特点: - 3种火 - 预制板共计80块 - 5种爆炸声 - 3个循环的火灾声音 - 7张火焰和烟雾的精灵图 - 8x8 帧的 spritesheet,分辨率在 2048 到 8192 像素之间 效果类别…

flask+mysql徐州市天气信息可视化分析系统-计算机毕业设计源码04600

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对天气信息等问题&#xff0c;对天气信息进行…

笔记本摄像头模拟监控推送RTSP流

使用笔记本摄像头模拟监控推送RTSP流 一、基础安装软件准备 本文使用软件下载链接:下载地址 FFmpeg软件: Download ffmpeg 选择Windows builds by BtbN 一个完整的跨平台解决方案&#xff0c;用于录制、转换和流式传输音频和视频。 EasyDarwin软件&#xff1a;Download Easy…

开源C语言库Melon:Cron格式解析

本文介绍开源C语言库Melon的cron格式解析。 关于 Melon 库&#xff0c;这是一个开源的 C 语言库&#xff0c;它具有&#xff1a;开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 cron也就是我们常说的Crontab中的时间格式&#xff0c;格式如…

Go语言学习笔记(二)

Go语言的学习资源 以下是一些推荐的Go语言学习资源的链接&#xff1a; Go语言教程&#xff1a;https://golang.org/doc/Go by Example&#xff1a;Go by ExampleGolang Tutorials&#xff1a;https://golangtutorials.com/Go语言第一课&#xff08;慕课网&#xff09;&#x…

【教学类-45-04】X-Y之间的“三连减加“题(a-b+c=)

作品展示&#xff1a; 背景需求&#xff1a; 【教学类-45-02】X-Y之间的“三连减“题(a-b-c)-CSDN博客文章浏览阅读465次&#xff0c;点赞15次&#xff0c;收藏7次。【教学类-45-02】X-Y之间的"三连减"题(a-b-c)https://blog.csdn.net/reasonsummer/article/details…

【Proteus仿真】【Arduino单片机】汽车车窗除霜系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用LCD1602显示模块、光线传感器、DS18B20温度传感器、PCF8691 ADC模块、继电器加热模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD…

3. SPSS数据文件的基本加工和处理

如何获取SPSS自带的案例数据文件&#xff1f; 首先找到SPSS的安装目录&#xff0c;然后找到Samples文件夹 可以看到有不同语言版本&#xff0c;选择简体中文 就能看到很多.sav文件 数据文件的整理 个案排序 单值排序 例&#xff1a;对于下面的数据集&#xff0c;将工资按…

华为mux vlan+DHCP+单臂路由用法配置案例

最终效果&#xff1a; vlan 2模拟局域网服务器&#xff0c;手动配置地址&#xff0c;也能上公网 vlan 3、4用dhcp分配地址 vlan 4的用户之间不能互通&#xff0c;但可以和其它vlan通&#xff0c;也能上公网 vlan 3的用户不受任何限制可以和任何vlan通&#xff0c;也能上公网 交…

SSL 阿里云证书申请和备案

一、什么是SSL SSL证书是数字证书的一种&#xff0c;类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上&#xff0c;也称为SSL服务器证书。遵守SSL协议&#xff0c;由受信任的数字证书颁发机构CA&#xff0c;在验证服务器身份后颁发&#xff0c;具有服务器身份验证…