在Spring Boot中如何使用Cookies详析

Spring Boot Session 会话管理 Spring Boot Session 会话管理是用于安全控制一个用户或者实体对基于网络的应用/服务的多个请求的过程。 HTTP用于网站和浏览器之间的交流,而会话则是同一个用户创建的一系列的HTTP请求和事务。 会话管理的实现规定了用户、网络应用之间共享和持续交换会话ID的过程。 由于HTTP协议的无状态,为了跟踪客户的行为,我们需要会话管理。会话管理是一个网络容器框架,用于为特定的用户储存会话数据。 我们可以通过以下方法处理会话: Cookies 网站发送的数据被储存在用户的本地浏览器中 隐藏的表 阅读详情

一、导读

本文大纲

  • 读取 HTTP Cookie
  • 设置 HTTP Cookie
  • 读取所有 Cookie[]
  • 为 Cookie 设置过期时间
  • Https 与 Cookie
  • HttpOnly Cookie
  • 删除Cookie

HTTP Cookie(也称为Web cookie,浏览器cookie)是服务器在用户浏览器中存储的小部分数据。服务器端应用程序在返回浏览器请求响应的时候设置cookie,浏览器存储cookie,并将它们在下一个请求一起发送的时候自动带回服务器端应用程序。

Cookies提供了一种在服务器和浏览器之间交换信息的方法,以管理会话(登录,购物车,游戏得分),记住用户首选项(主题,隐私策略接受)以及跟踪整个站点的用户行为。Cookies在一定程度上解放了服务器端的压力,因为将一部分数据放在浏览器端存储,所以这部分数据不能是涉及应用安全的数据。在本文中,我们将学习如何在Spring Boot应用程序中读取、设置和删除HTTP cookie。

二、读取HTTP Cookie

Spring框架提供@CookieValue注释来获取HTTP cookie的值,此注解可直接用在控制器方法参数中。

@GetMapping("/")
public String readCookie(@CookieValue(value = "username", 
                   defaultValue = "Atta") String username) {
  return "Hey! My username is " + username;
}

在上述代码段中,请注意defaultValue = “Atta”。如果没有设置默认值,并且没有找到名称为username的Cookie,Spring将抛出java.lang.IllegalStateException异常。

三、设置HTTP Cookie

要在Spring Boot中设置cookie,我们可以使用HttpServletResponse类的方法addCookie()。您需要做的就是创建一个新的Cookie对象并将其添加到响应中。

@GetMapping("/change-username")
public String setCookie(HttpServletResponse response) {
  // 创建一个 cookie对象
  Cookie cookie = new Cookie("username", "Jovan");
 
  //将cookie对象加入response响应
  response.addCookie(cookie);
 
  return "Username is changed!";
}

四、读取所有Cookie[]

除了使用@CookieValue注解,我们还可以使用HttpServletRequest类作为控制器方法参数来读取所有cookie。此类提供了getCookies()方法,该方法以数组形式返回浏览器发送的所有cookie。

@GetMapping("/all-cookies")
public String readAllCookies(HttpServletRequest request) {
 
  Cookie[] cookies = request.getCookies();
  if (cookies != null) {
    return Arrays.stream(cookies)
        .map(c -> c.getName() + "=" + c.getValue())
        .collect(Collectors.joining(", "));
  }
 
  return "No cookies";
}

五、为Cookie设置过期时间

如果没有为cookie指定过期时间,则其生命周期将持续到Session过期为止。这样的cookie称为会话cookie。会话cookie保持活动状态,直到用户关闭其浏览器或清除其cookie。但是您可以覆盖此默认行为,并使用类的setMaxAge()方法设置cookie的过期时间。

// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // 7天过期
 
//将cookie对象加入response响应
response.addCookie(cookie);

现在,usernameCookie不会因为Seesion结束到期,而是会在接下来的7天保持有效。传递给setMaxAge()方法的到期时间以秒为单位。到期日期和时间是相对于设置cookie的客户端而不是服务器而言的。

六、Https与Cookie

我们需要了解一个概念:什么的安全的Cookies?安全的cookie是仅可以通过加密的HTTPS连接发送到服务器的cookie。无法通过未加密的HTTP连接将cookie发送到服务器。也就是说,如果设置了setSecure(true),该Cookie将无法在Http连接中传输,只能是Https连接中传输。

// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setSecure(true); //Https 安全cookie
 
//将cookie对象加入response响应
response.addCookie(cookie);

七、HttpOnly Cookie

HttpOnly cookie用于防止跨站点脚本(XSS)攻击,也就是说设置了Http Only的Cookie不能通过JavaScript的Document.cookieAPI访问,仅能在服务端由服务器程序访问。

// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setHttpOnly(true); //不能被js访问的Cookie
 
//将cookie对象加入response响应
response.addCookie(cookie);

八、删除Cookie

要删除Cookie,需要将Max-Age设置为0,并且将Cookie的值设置为null。不要将Max-Age指令值设置为-1负数。否则,浏览器会将其视为会话cookie。

// 将Cookie的值设置为null
Cookie cookie = new Cookie("username", null);
//将`Max-Age`设置为0
cookie.setMaxAge(0);
 
response.addCookie(cookie);
使用Spring Boot实现登录功能并将会话缓存到Redis和Cookies中 在这篇文章中,我们将学习如何使用Spring Boot框架来实现用户登录功能,并将用户的会话信息缓存到Redis和Cookies中。用户输入用户名和密码后,将会将用户名保存到Redis中,并将会话ID保存到Cookie中。需要注意的是,这只是一个简单的示例,实际应用中还需要对用户名和密码进行验证,并实现注销功能等。在该视图中,我们使用表单来接收用户输入的用户名和密码,并将其提交到后端进行验证。在上面的代码中,我们定义了一个表单,其中包含用户名和密码的输入字段,并使用POST方法将数据提交到。 阅读详情

相关推荐

Spring Boot 系列教程:使用 Java 实现登出功能并清除 Redis 中的缓存 Session 和 Cookies

在本篇教程中,我们将学习如何使用 Spring Boot 和 Java 开发一个登出功能,并清除存储在 Redis 中的缓存 Session 和 Cookies。我们将使用 Spring Session 来管理 Session,并结合 Redis 作为 Session 的持久化存储。然后,我们从 Session 中获取保存的用户信息或其他相关数据,完成后删除 Session 和 Redis 中的 Session 数据。,它是 Spring Session 提供的用于管理 Session 的接口。

PixelCoder的博客 673

SpringBoot开发中使用Cookie

SpringBoot开发中使用Cookie

JAVA_Coyo的博客 1万+

深入浅出ASAP2标准:手把手教你编写和解析A2L文件(含Python示例代码)

本文深入解析ASAP2标准下的A2L文件,涵盖基础概念、文件结构及Python实现代码,帮助开发者掌握汽车ECU标定和测量中的关键数据管理技术。通过详细示例,展示如何编写和解析A2L文件,提升电控数据管理效率。

happy2的博客 1100

7.session与cookie

Session与Cookie 什么是cookie? cookie:在网站中,HTTP请求是无状态的。也就是第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道请求的是哪个用户。cookie的出现是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务...

only_Tokimeki的博客 419

赛灵思KV260视觉AI套件实战:从模型到边缘部署全流程解析

边缘计算与AI推理加速是当前嵌入式系统和物联网领域的关键技术。其核心原理在于将计算任务从云端下沉至网络边缘的设备端,通过专用硬件加速器(如FPGA、ASIC或NPU)执行神经网络推理,从而显著降低延迟、减少带宽消耗并提升数据隐私性。这一技术为实时性要求高的应用场景(如工业视觉检测、智能安防、自动驾驶等)提供了关键支撑。以赛灵思(Xilinx)的Zynq UltraScale+ MPSoC平台为例,其集成了ARM处理器与可编程逻辑,通过预置的深度学习处理器单元(DPU)为卷积神经网络提供高效INT8加速。开发

weixin_28719225的博客 326

从SC7A20数据手册到代码:一步步搞定加速度值读取与换算(避坑指南)

本文详细解析了SC7A20三轴加速度传感器的数据手册,从寄存器配置到原始数据读取,再到加速度值的换算方法。通过代码示例和避坑指南,帮助开发者准确实现加速度值的读取与换算,适用于嵌入式开发和运动检测应用。

weixin_26878995的博客 587

spring AOP+注解方式实现登录验证(session+cookies)

学习总是在不断继续的,这次我将实现一个基于aop的的一个注解操作。 首先加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </depen...

matthew_leung的博客 1517

【AutoDL + Langchain-Chatchat】从零构建高效本地 RAG 知识库问答系统:实战保姆级教程(含避坑指南)

本文详细阐述如何在AutoDL云平台,如何利用Langchain-Chatchat构建高效的本地RAG知识库问答系统,并深入解析RAG架构。从环境搭建到实战部署,从问题排查到性能优化,提供一份全面实用的指南,助力开发者快速构建智能问答应用。

拾光夕拾的博客 1803

解决spring cloud项目中的cookie Path问题

最近在项目中出现一个问题,A项目是一个老项目,B项目为spring cloud中的微服务。B项目在登陆后response中返回set-cookie字段为JSESSIONID=xxxxxxxxx;PATH=/。这样一来导致同域下的A项目登陆不但有自己的一个JSESSIONID还会带有B项目登录后返回的JSESSIONID,这样导致了A项目无法正确拿到登录信息,一直重定向单点登录。 查了一下原因: J...

lianlin21212411的博客 8276

pycharm一直选择不了conda正确路径弹框报错:latinit property envs_dirs has not been initialized...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2921

Autosar PWM模块的配置和使用

在上面的代码中,我们首先配置了PWM的初始化参数,包括频率和分辨率。GPIO Driver:由于PWM信号需要输出到特定的引脚上,因此我们还需要使用GPIO驱动程序来控制引脚的状态。通过合理配置和应用PWM模块,我们可以实现对汽车电子系统中各种功能的精确控制,从而提高汽车性能和用户体验。在实际应用中,我们可以根据需要进行更多的配置和调整,以实现灵活的PWM控制。PWM Driver:这是主要的PWM驱动程序,负责产生PWM信号并输出到相应的引脚上。接下来,我们需要配置PWM模块的参数。

TcData的博客 682

Spring Boot -Cookies

Spring Boot - Cookies | Xing's Bloghttps://xinghua24.github.io/SpringBoot/Spring-Boot-Cookies/ 让我们学习如何在 Spring Boot 应用程序中使用 cookie。 什么是 HTTP Cookie HTTPcookie(Web cookie,浏览器 cookie)是服务器发送到用户 Web 浏览器的一小段数据。浏览器可以存储它并将其与以后的请求一起发送回同一服务器。通常,它用于判断两个请求是否来自同.

allway2的博客 2953

硬件工程师提前批真题及答案解析2

我们需要考虑题目可能的简化假设,即输入电阻 Ri​ 可能是 rbe​ 和 βre​ 的组合,但题目可能简化为: Ri​≈rbe​+βre​。由于锗管的正向导通电压较小(0.2 V~0.3 V),而硅管的正向导通电压较大(0.6 V~0.7 V),因此-4.7 V的电压差不符合硅管的特性,而更接近锗管的特性。在三极管电路中,静态电位是指在无信号输入时,三极管各电极的直流电压。re​ 是动态发射极电阻,通常可以近似为 re​=IE​VT​​,但在题目中已经给出了 re​=300Ω,因此可以直接使用这个值。

XU157303764的博客 782

spring 获取cookies_在Spring Boot中如何使用Cookies详析

一、 导读本文大纲读取HTTP Cookie设置HTTP Cookie读取所有Cookie[]为Cookie设置过期时间Https与CookieHttpOnly Cookie删除CookieHTTP Cookie(也称为Web cookie,浏览器cookie)是服务器在用户浏览器中存储的小部分数据。服务器端应用程序在返回浏览器请求响应的时候设置cookie,浏览器存储cookie,并将它们在下一...

weixin_39983554的博客 583

工作之余的随想:AI 会终结 SAP 顾问吗?

本文是笔者工作之余的一些胡思乱想。昨晚(准确的说是今日凌晨),我又熬了一个夜。没办法,接到一个影响客户项目上线的紧急 incident,花了我好长时间,竟然一点头绪都没有。苦苦思索的过程,时间过得飞快。一转眼就晚上11:30 了。要说我 2007 年还在研三实习期间,就进入了 SAP 行业,到今天已经摸爬滚打 18 年了,按理说也算身经百战了,可以说处理过很多 SAP 客户使用系统时遇到的各种稀奇古怪的问题。但即便这样,我也时常在工作中遇到一开始感到无从下手的问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1264

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何在Spring Boot中使用Cookies

一、 导读 本文大纲 读取HTTP Cookie 设置HTTP Cookie 读取所有Cookie[] 为Cookie设置过期时间 Https与Cookie HttpOnly Cookie 删除Cookie HTTP Cookie(也称为Web cookie,浏览器cookie)是服务器在用户浏览器中存储的小部分数据。服务器端应用程序在返回浏览器请求响应的时候设置cookie,浏览器存储...

字母哥博客 2764

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

spring 获取cookies_如何在Spring Boot中使用Cookie

HTTP Cookie(也称为 Web cookie或 浏览器cookie)是服务器在用户浏览器中存储的一小段信息。服务器在返回浏览器发出的请求的响应时设置cookie。浏览器存储cookie并将其与下一个请求一起发送回同一服务器。Cookie通常用于会话管理,用户跟踪和存储用户首选项。Cookie可帮助服务器在多个请求中记住客户端。如果没有cookie,服务器会将每个请求视为新客户端。在本文...

weixin_39677538的博客 627

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring-Boot + Spring-Security + Vue 跨域问题

原文: http://www.aqcoder.com/post/content?id=40 最近的一个小项目使用了 Spring-Boot + Vue 的前后端分离小项目,项目虽小,也五脏俱全,有自己的用户系统,因此就有了权鉴问题。 Java 领域里有两个权鉴框架比较出名 Shiro 和 Spring Security。这里我们使用了 Spring Security。 必须要了解的概念 CSR...

Ravenq的专栏 5543

Spring Boot TestRestTemplate教程

Spring Boot TestRestTemplate教程 本文介绍 Spring Boot TestRestTemplate。建议阅读之前先阅读RestTemplate简明教程,TestRestTemplate可认为是RestTemplate有吸引力的替代方案。 1. maven依赖 使用TestRestTemplate之前需要加入相应依赖: <dependency> &l...

neweastsun的专栏 5590

spring boot项目之登出删除缓存session至redis和cookies

一、从request中读出cookies集合,然后封装成map,为的是能够直接通过name得到相应的cookie即get方法 public static Cookie get(HttpServletRequest request, String name) { Map<String, Cookie> cookieMap = rea...

weixin_30725467的博客 2865

cookies默认过期时间_如何在Spring Boot中使用Cookies?大家节日快乐,甜点送上

我写这篇文章的时间是2019年10月24日,Cookies英文意思为:“小甜点”,在这样一个节日,首先祝大家节日快乐、身体健康、阖家幸福!然后来看看我们今天的甜点,本文将介绍如何在Spring Boot应用程序中读取、设置和删除HTTP cookie。笔者用心书写,希望对您能有所帮助。如果读完本文您觉得有所收获,请帮忙关注、转发!您的支持是我不竭的创作动力!一、 导读本文大纲读取HTTP Cook...

weixin_35353583的博客 1586

Spring Boot的TestRestTemplate使用

文章目录添加maven依赖TestRestTemplate VS RestTemplate使用Basic Auth Credentials使用HttpClientOption使用RestTemplateBuilder Spring Boot的TestRestTemplate使用 TestRestTemplate和RestTemplate很类似,不过它是专门用在测试环境中的,本文我们将会讲述Test...

程序那些事 1万+

解析 “Cookies Not Marked as HttpOnly” 漏洞

在对某网站进行安全扫描时,发现了 “Cookies Not Marked as HttpOnly” 漏洞。这个漏洞意味着网站设置的某些 Cookies 没有启用 HttpOnly 属性。HttpOnly 是一个特殊的 Cookies 属性。当一个 Cookie 被设置为 HttpOnly 时,浏览器会限制客户端脚本(如 JavaScript)对该 Cookie 的访问。这一属性对于保护用户的敏感信息至关重要,特别是在涉及用户会话管理的 Cookies 中。

qq_33163046的博客 1499
上一篇: java 单例模式实现的几种方式
下一篇: docker 容器中: jstack on alpine:Unable to get pid of LinuxThreads manager thread
who7708
博客等级 码龄16年 8粉丝 35原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值