【Web应用】 Java + Vue 前后端开发中的Cookie、Token 和 Swagger介绍

news2025/6/1 20:55:35

文章目录

  • 前言
  • 一、Cookie
  • 二、Token
  • 三、Swagger
  • 总结

前言

在现代的 web 开发中,前后端分离的架构越来越受到欢迎,Java 和 Vue 是这一架构中常用的技术栈。在这个过程中,Cookie、Token 和 Swagger 是三个非常重要的概念。本文将对这三个词进行详细介绍,并探讨它们在前后端开发中的应用。

一、Cookie

1. 什么是 Cookie?

Cookie 是一种在用户的浏览器中存储小块数据的机制。它通常用于存储用户的会话信息,以便在用户访问网站时能够保持状态。例如,当用户登录后,服务器可能会向用户的浏览器发送一个 Cookie,以便在后续请求中识别用户。

2. Cookie 的特点:

  • 存储位置:存储在客户端的浏览器中。
  • 生命周期:可以设置过期时间,过期后自动删除。
  • 安全性:可以设置为 HttpOnly 和 Secure,以提高安全性。

3. 在 Java + Vue 中的应用:

在 Java 后端开发中,通常使用 Spring Security 等框架来管理用户的身份验证,并通过 Cookie 存储用户的登录状态。前端 Vue 应用在每次请求时,会自动携带 Cookie,从而实现用户的状态保持。

Java后端设置Cookie:

@GetMapping("/setCookie")
public ResponseEntity<String> setCookie(HttpServletResponse response) {
    Cookie cookie = new Cookie("username", "user123");
    cookie.setMaxAge(7 * 24 * 60 * 60); // 过期时间(秒)
    cookie.setPath("/"); // 作用路径
    cookie.setHttpOnly(true); // 仅HTTP访问,防止XSS
    response.addCookie(cookie);
    return ResponseEntity.ok("Cookie已设置");
}

Vue前端读取Cookie:

// 使用js-cookie库
import Cookies from 'js-cookie';

// 设置Cookie
Cookies.set('username', 'user123', { expires: 7 });

// 读取Cookie
const username = Cookies.get('username');

二、Token

1. 什么是 Token?

Token 是一种用于身份验证的字符串,通常是在用户登录后由服务器生成并返回给客户端。与 Cookie 不同,Token 通常以 JSON Web Token (JWT) 的形式存在,包含了用户的信息和签名,用于验证其合法性。

2. Token 的特点:

  • 无状态:Token 不需要在服务器端存储,所有信息都包含在 Token 中。
  • 跨域支持:Token 可以在不同的域之间使用,适合微服务架构。
  • 安全性:可以通过签名验证 Token 的有效性,防止伪造。

3. 在 Java + Vue 中的应用:

在 Java 后端中,使用 JWT 生成 Token,前端 Vue 应用在用户登录后接收到 Token,并将其存储在本地存储(localStorage)中。后续的 API 请求中,Vue 应用会在请求头中携带 Token,从而实现身份验证。

Java后端生成JWT:

public String generateToken(String username) {
    return Jwts.builder()
        .setSubject(username)
        .setIssuedAt(new Date())
        .setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 1小时过期
        .signWith(SignatureAlgorithm.HS512, "yourSecretKey")
        .compact();
}

Vue前端处理Token:

// 登录后保存token
localStorage.setItem('token', response.data.token);

// 在axios拦截器中添加token
axios.interceptors.request.use(config => {
    const token = localStorage.getItem('token');
    if (token) {
        config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
});

三、Swagger

1. 什么是 Swagger?

Swagger 是一个用于 API 文档生成的工具,可以帮助开发者设计、构建和文档化 RESTful API。通过 Swagger,开发者可以轻松地创建 API 文档,并提供交互式的 API 调试界面。

2. Swagger 的特点:

  • 自动生成文档:通过注解和配置,可以自动生成 API 文档。
  • 交互式界面:提供用户友好的界面,方便开发者和测试人员进行接口测试。
  • 支持多种语言:支持多种编程语言和框架,易于集成。

3. 在 Java + Vue 中的应用:

在 Java 后端开发中,通常使用 Springfox 或 Springdoc 等库来集成 Swagger。通过在控制器中添加注解,开发者可以生成 API 文档。在 Vue 前端中,开发者可以根据 Swagger 文档了解后端提供的接口,方便进行前端开发和调试。

Java集成Swagger:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.your.package"))
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo());
    }
    
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("API文档")
            .description("Java+Vue项目API文档")
            .version("1.0")
            .build();
    }
}

访问地址:http://localhost:8080/swagger-ui.html

总结

在 Java + Vue 前后端开发中,Cookie 和 Token 是实现用户身份验证和状态管理的重要机制,而 Swagger 则是帮助开发者生成和维护 API 文档的有力工具。理解这三个概念及其应用,可以帮助开发者更高效地进行前后端分离的开发工作。希望本文能为您在前后端开发中提供一些有用的参考!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是VR全景相机?如何选择VR全景相机?

VR全景相机的定义、原理及特点 定义&#xff1a;VR全景相机是利用特殊镜头设计和图像处理技术&#xff0c;能够捕捉到360度全方位、无死角的高清影像&#xff0c;并通过虚拟现实技术将用户带入沉浸式全景环境的相机设备。 原理&#xff1a;VR全景相机通过集成多个鱼眼镜头&am…

如何创建和使用汇编语言,以及下载编译汇编软件(Notepad++,NASM的安装)

一、汇编语言基础&#xff1a;用文本文档(Windows自带)初步尝试 1. 什么是汇编语言&#xff1f; 汇编语言是一种面向处理器&#xff08;CPU&#xff09;的低级编程语言&#xff0c;通过助记符&#xff08;如MOV、ADD&#xff09;直接控制硬件。它需要通过编译器&#xff08;如…

Python训练营打卡Day40(2025.5.30)

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout # 先继续之前的代码 import torch import …

SpringBoot+vue+SSE+Nginx实现消息实时推送

一、背景 项目中消息推送&#xff0c;简单的有短轮询、长轮询&#xff0c;还有SSE&#xff08;Server-Sent Events&#xff09;、以及最强大复杂的WebSocket。 至于技术选型&#xff0c;SSE和WebSocket区别&#xff0c;网上有很多&#xff0c;我也不整理了&#xff0c;大佬的链…

哈工大计算机系统大作业 程序人生-Hello’s P2P

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信 学   号 2023111772 班   级 23L0503 学 生 张哲瑞     指 导 教 师 …

计算机一次取数过程分析

计算机一次取数过程分析 1 取址过程 CPU由运算器和控制器组成&#xff0c;其中控制器中的程序计数器(PC)保存的是下一条指令的虚拟地址&#xff0c;经过内存管理单元(MMU)&#xff0c;将虚拟地址转换为物理地址&#xff0c;之后交给主存地址寄存器(MAR)&#xff0c;从主存中取…

Halcon联合QT ROI绘制

文章目录 Halcon 操纵界面代码窗口代码 Halcon 操纵界面代码 #pragma once#include <QLabel>#include <halconcpp/HalconCpp.h> #include <qtimer.h> #include <qevent.h> using namespace HalconCpp;#pragma execution_character_set("utf-8&qu…

力扣面试150题--二叉树的右视图

Day 53 题目描述 思路 采取层序遍历&#xff0c;利用一个high的队列来保存每个节点的高度&#xff0c;highb和y记录上一个节点的高度和节点&#xff0c;在队列中&#xff0c;如果队列中顶部元素的高度大于上一个节点的高度&#xff0c;说明上一个节点就是上一层中最右边的元素…

江西某石灰石矿边坡自动化监测

1. 项目简介 该矿为露天矿山&#xff0c;开采矿种为水泥用石灰岩&#xff0c;许可生产规模200万t/a&#xff0c;矿区面积为1.2264km2&#xff0c;许可开采深度为422m&#xff5e;250m。矿区地形为东西一北东东向带状分布&#xff0c;北高南低&#xff0c;北部为由浅变质岩系组…

C# 类和继承(所有类都派生自object类)

所有类都派生自object类 除了特殊的类object&#xff0c;所有的类都是派生类&#xff0c;即使它们没有基类规格说明。类object是唯 一的非派生类&#xff0c;因为它是继承层次结构的基础。 没有基类规格说明的类隐式地直接派生自类object。不加基类规格说明只是指定object为 基…

02业务流程的定义

1.要想用好业务流程&#xff0c;首先必须得了解流程与认识流程&#xff0c;什么是业务流程。在认识流程之前&#xff0c;首先要理清两个基本概念&#xff0c;业务和流程。 业务指的是&#xff1a;个人的或者摸个机构的专业工作。流程&#xff0c;原本指的是水的路程&#xff0…

cursor rules设置:让cursor按执行步骤处理(分析需求和上下文、方案对比、确定方案、执行、总结)

写在前面的话&#xff1a; 直接在cursor rules中设置一下内容&#xff1a; RIPER-5 MULTIDIMENSIONAL THINKING AGENT EXECUTION PROTOCOL 目录 RIPER-5 MULTIDIMENSIONAL THINKING AGENT EXECUTION PROTOCOL 目录 上下文与设置 核心思维原则 模式详解 模式1: RESEARCH…

Linux操作系统之进程(四):命令行参数与环境变量

目录 前言&#xff1a; 什么是命令行参数 什么是环境变量 认识环境变量 PATH环境变量 HOME USER OLDPWD 本地变量 本地变量与环境变量的差异 核心要点回顾 结语&#xff1a; 前言&#xff1a; 大家好&#xff0c;今天给大家带来的是一个非常简单&#xff0c;但也十…

Typora-macOS 风格代码块

效果&#xff1a; 替换 Typora安装目录中 themes 文件夹下的 base.user.css 文件&#xff0c;直接替换即可&#xff0c;建议先备份。 css&#xff1a; /* 语法高亮配色 */ .CodeMirror-line .cm-number { color: #b5cea8; } /* 数字 - 浅绿色 */ .CodeMirror-line .…

ansible自动化playbook简单实践

方法一&#xff1a;部分使用ansible 基于现有的nginx配置文件&#xff0c;定制部署nginx软件&#xff0c;将我们的知识进行整合 定制要求&#xff1a; 启动用户&#xff1a;nginx-test&#xff0c;uid是82&#xff0c;系统用户&#xff0c;不能登录 启动端口82 web项目根目录/…

20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载

20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载 2025/5/26 14:44 百度&#xff1a;AMD 7700 显卡驱动 amd APU 显卡驱动 https://item.jd.com/100054819707.html 惠普HP【国家补贴20%】锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U 16G 1T…

2025年5月蓝桥杯stema省赛真题——象棋移动

上方题目可点下方去处&#xff0c;支持在线编程&#xff5e; 象棋移动_scratch_少儿编程题库学习中心-嗨信奥 程序演示可点下方&#xff0c;支持源码和素材获取&#xff5e; 象棋移动-scratch作品-少儿编程题库学习中心-嗨信奥 题库收集了历届各白名单赛事真题和权威机构考级…

AI重构SEO关键词精准定位

内容概要 随着AI技术深度渗透数字营销领域&#xff0c;传统SEO关键词定位模式正经历系统性重构。基于自然语言处理&#xff08;NLP&#xff09;的智能语义分析引擎&#xff0c;可突破传统关键词工具的局限性&#xff0c;通过解析长尾搜索词中的隐含意图与语境关联&#xff0c;…

SPSS跨域分类:自监督知识+软模板优化

1. 图1:SPSS方法流程图 作用:展示了SPSS方法的整体流程,从数据预处理到模型预测的关键步骤。核心内容: 领域知识提取:使用三种词性标注工具(NLTK、spaCy、TextBlob)从源域和目标域提取名词或形容词(如例句中提取“excellent”“good”等形容词)。词汇交集与聚类:对提…

vscode的Embedded IDE创建keil项目找不到源函数或者无法跳转

创建完Embedded IDE项目后跳转索引很容易找不到源函数或者无法跳转&#xff0c;原因是vscode工作区被eide覆盖了&#xff0c;需要手动往当前目录下的.vscode/c_cpp_properties.json里添加路径 打开eide.json &#xff0c;找到folders&#xff0c; 里面的name是keil里工程的虚拟…