1.RememberMe简介及用法

简介: RememberMe是一种服务器端机制,通过Cookie实现用户关闭浏览器后仍保持登录状态。用户首次登录并勾选“记住我”后,服务端生成令牌写入Cookie;后续请求自动携带该令牌进行校验,实现免密登录。但令牌泄露可能导致安全风险,可通过持久化Token至数据库并增加二次验证提升安全性。

1.基本简介
RememberMe功能十分常见,如下图的QQ邮箱登录时的“记住我”的功能选项。
这里读者朋友们可能会有一个常见误区,“记住我”就是把用户的用户名/密码使用Cookie保存在浏览器,下次登录时不用再次输入,这个理解是非常不对的。
我们这里所说的RememberMe是一种服务器端的行为。传统的登录方式基于Session会话,一旦用户关闭浏览器重新打开,就要重新登录,这样太过于烦琐,如果有一种机制可以让用户关闭并重新打开浏览器之后,还能保持登录状态就会方便很多,这种实现之一就是RememberMe。
其大概实现如下面的流程所示,但是读者可能也发现这种将用户密码保存在浏览器的行为存在安全隐患。

打开网页登录

前端Cookie记录

用户第一次登录

打开网页

后端服务器

用户第二次登录
自动将Cookie发送给服务器​
对Cookie信息校验

Cookie是否有效

自动进入系统
有效​


跳转至登录页面
重新走登录流程
无效​

2.基本用法
在前两天的内容后,我们直接在原有代码修改,增添RememberMe功能。
1.注册配置信息
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.yzxb.SpringSecurity.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Bean
PasswordEncoder passwordEncoder() {
    return NoOpPasswordEncoder.getInstance();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .rememberMe()
            .key("ikun")
            .and()
            .csrf().disable();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
            .withUser("ikun")
            .password("5201314")
            .roles("admin");
}

}
2.重启验证功能
此时重启项目,访问我们原来的接口:http://localhost:8080/demo/index,会发现登录窗口多了一个勾选框,当我们勾选之后,登录。之后关闭浏览器再次访问上述地址,就会发现无需重复登录了。
注意这里不要重启后端服务
那么这一切就因为多了一个勾选框就实现的流程,到底是怎么实现的呢?我们大概可以猜出来他会告诉服务端是否开启RememberMe功能,当请求后,我们会发现响应头多了一个Set-Cookie参数,如下图:
在响应头给了一个remember-me的字符串,以后所有的请求头Cookie字段都会自动携带这个令牌,服务端可以利用该令牌校验用户身份是否合法。
大致流程如上所述,但是读者们应该想起来我们前面说的问题了,这种令牌一旦泄露,不怀好意的Ikun们可以拿这个令牌随意访问系统,从而给系统带来风险和性能压力。怎么优化呢?
类似于我们前面的自定义认证一样,将Token持久化到DB即可。这里我们也可以做进一步的二次校验,从而保证系统的全局安全。

相关文章
|
人工智能 资源调度 算法
【利用AI让知识体系化】进程和线程(一)
【利用AI让知识体系化】进程和线程
|
24天前
|
人工智能 缓存 运维
2026年阿里云上OpenClaw从0到1搭建多 Agent 团队协作系统实战指南,执行效率提升10倍以上
在AI工具从“单点能力”向“系统协作”进化的今天,OpenClaw多Agent系统凭借“分工协作、自动拆解、实时联动”的核心优势,彻底改变了AI的使用逻辑——它不再是单打独斗的工具,而是能组成“数字战队”的协作系统,让复杂任务的执行效率提升10倍以上。
2177 8
|
12天前
|
人工智能 Linux API
新手必看:1分钟部署OpenClaw与多Agent协同保姆级教程,附阿里云百炼API配置及避坑指南
2026年的OpenClaw(原Clawdbot)凭借其强大的多Agent协同能力和跨平台部署特性,成为了实现复杂任务自动化的核心工具。与普通AI工具不同,OpenClaw支持多个智能体各司其职、协同工作,能将复杂任务拆解为多个子任务并行处理,同时具备专业化分工、容错性强的优势。但对于零基础用户而言,从部署到实现多Agent协同,需要完成全平台环境搭建、阿里云百炼API配置、智能体角色定义和工作流编排等一系列步骤。本文将从新手视角出发,详细讲解2026年OpenClaw在阿里云、MacOS、Linux、Windows11的本地部署流程,完成阿里云百炼免费大模型API的核心配置
1505 7
|
1月前
|
人工智能 数据挖掘 API
2026年OpenClaw Agent Skills深度解析:架构原理+阿里云部署+实战指南
从“只会聊天的机器人”到“能动手干活的智能助手”,OpenClaw(原Clawdbot)的Agent Skills生态正在重塑AI Agent的能力边界。想象这样一个场景:当你需要分析销售数据时,无需繁琐输入“读取Excel→清洗数据→生成图表→输出报告”的完整指令,只需说一句“分析这份销售数据”,OpenClaw就会自动调用“数据分析”技能包,完成全流程操作。这就是Agent Skills的核心价值——将复杂业务逻辑封装成可复用的“技能模块”,让AI像人类专家一样按需调用专业能力。
1574 7
|
1月前
|
人工智能 Rust 运维
CC本次更新最强的不是OPUS4.6,而是Agent Swarm(蜂群)
老金揭秘Claude最新Agent Swarm:AI自动组团协作!无需人工盯梢,一句话指令即可分工、通信、自修复,效率提升3倍、成本降40%。含6大落地模板、3大核心机制与实战配置,助你从“单打独斗”升级为“指挥数字团队”。
|
机器学习/深度学习 分布式计算 并行计算
《构建高效K近邻算法:降低计算复杂度的策略与实践》
K近邻(KNN)算法在机器学习中广泛应用,但面临计算复杂度高的问题。为提高效率,可通过以下方法优化: 1. **数据预处理**:降维(如PCA、LDA)和标准化,减少维度和尺度差异。 2. **优化距离度量**:选择合适的距离函数或自适应调整,提升相似性判断。 3. **加速搜索**:使用KD树、球树、LSH等数据结构,减少搜索范围。 4. **近似最近邻**:随机投影、基于聚类的近似算法,降低计算成本。 5. **并行与分布式处理**:利用多核、GPU或分布式框架加速计算。 6. **融合其他算法**:结合神经网络或聚类算法,先提取特征或聚类再应用KNN。
535 13
|
机器人 Python
【Leetcode刷题Python】62. 不同路径
LeetCode 62题 "不同路径" 的Python解决方案,使用动态规划算法计算机器人从网格左上角到右下角的所有可能路径数量。
322 0
|
数据可视化 安全 IDE
快速部署Langflow构建低代码应用
本文介绍了Langflow的基本信息,并通过阿里云计算巢完成了Langflow的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Langflow,非技术同学也能轻松搞定。
|
Ubuntu Shell Docker
在Docker环境下如何“安装”Ubuntu
【8月更文挑战第18天】在Docker环境中“安装”Ubuntu实际上是指利用Ubuntu镜像构建容器。
1527 1