RememberMe基本用法

简介: 本示例通过Spring Security实现RememberMe功能,用户勾选后登录信息持久化,关闭浏览器仍可免密访问。通过`remember-me` Cookie传递令牌,实现会话保持。但存在令牌泄露风险,可通过Token持久化至数据库并增加二次校验提升安全性,保障系统稳定与用户数据安全。(238字)

.注册配置信息
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即可。这里我们也可以做进一步的二次校验,从而保证系统的全局安全。

相关文章
|
传感器 Ubuntu 机器人
Python 机器人学习手册:1~5
Python 机器人学习手册:1~5
723 0
|
4月前
|
供应链 监控 前端开发
容器化落地实战:基于Docker与K8s搭建高可用供应链控制塔部署监控体系
在现代数字化供应链体系中,供应链控制塔是统筹全链路业务的核心平台,它整合库存、物流、生产、订单、风险预警等多维度数据,为企业管理者提供统一的可视化管控入口。随着业务规模持续扩张,供应链数据量呈指数级增长,百万级节点数据实时刷新、大促期间流量洪峰、区域服务器故障、跨节点服务中断等问题接踵而至。传统单机部署、物理机集群部署模式,已无法满足系统7×24小时稳定运行、前端低延迟渲染、故障自动恢复的核心诉求。本文将从架构设计、容器化改造、集群编排、前后端协同、全链路监控、前端性能优化、容灾风控七大维度,完整讲解从0到1搭建基于Docker与Kubernetes的高可用供应链控制塔,提供全套可落地的工程代
392 0
|
4月前
|
存储 SQL 人工智能
内附下载|阿里云瑶池数据库10篇论文入选全球数据库顶会SIGMOD 2026
数据库国际学术顶会 SIGMOD 2026 在印度班加罗尔举行,阿里云瑶池数据库团队共有 10 篇论文被主会收录。论文研究成果涵盖数据库与AI协同、云原生数据存储架构、数据库智能化工具等多个技术方向,系统研究了从底层硬件架构到上层智能应用的关键技术难题。多项突破性成果的集中入选,标志着阿里云在 Agentic AI 时代的数据库软件领域持续引领前沿技术革新。
|
6月前
|
人工智能 JSON Oracle
Oracle中各个c版本介绍
Oracle数据库“c”系列(Cloud)始于2013年12c,标志多租户架构革命。当前生产首选19c(长期稳定),学习与AI应用推荐23ai(原23c),支持向量搜索与JSON关系二元性;21c为短期创新版,12c/18c已停更。云原生演进清晰,稳中求新。(239字)
1953 4
|
6月前
|
运维 网络协议 安全
手把手评估一个域名的技术健康度——DNS+SSL双维深度体检
域名是云原生时代的技术基座之一。本文提供一套DNS解析性能(dig +trace +TTL量化)与SSL/TLS安全配置(证书检测、TLS协议版本、HSTS检查)的全流程实操评估方法,包含可直接复现的命令行脚本和实测数据。适合对网络基础设施、域名安全、云运维感兴趣的开发者。
906 2
|
6月前
|
人工智能 JavaScript API
(技术贴)别被全网爆火的OpenClaw骗了!实测2小时,真不适合普通人
别被全网爆火的OpenClaw误导!实测2小时发现:部署卡顿、API成本高(日耗几十至千元)、报错难排查,需懂命令行与调试——它本质是开发者框架,非普通人开箱即用工具。现阶段,等待成熟或选择成熟产品更明智。
788 6
|
6月前
|
JSON 监控 5G
某宝店铺商品全量接口-item_search_shop
淘宝item_search_shop_pro接口支持按店铺ID全量获取在售商品,含分页、字段筛选与类目过滤;提供完整参数说明、返回字段详解、Python调用示例及风控规范,开箱即用,适用于竞品监控、ERP同步与选品分析。(239字)
|
10月前
|
网络协议 网络安全 网络虚拟化
DNS 隧道
DNS隧道利用DNS协议在53端口传输非DNS流量,如HTTP数据。虽有合法用途,但常被攻击者用于恶意目的,伪装出站流量,窃取数据或建立命令与控制通道,隐蔽性强,威胁网络安全。
|
10月前
|
SQL 数据库 数据安全/隐私保护
用于绕过身份验证的 SQL 注入示例
该文介绍了SQL注入如何绕过登录验证:攻击者通过在登录表单输入恶意构造的用户名(如`admin')--`)和密码,利用SQL语句注释符`--`使数据库忽略密码校验,从而非法获取管理员权限。此攻击无需知晓真实密码,凸显了输入验证的重要性。
|
10月前
|
安全 小程序 JavaScript
OAuth2.0四种授权模式
OAuth2四种授权模式简介:授权码模式最安全,适用于第三方登录;简化模式适用于无后端的应用;密码模式需高度信任;客户端模式用于服务间调用,无需用户参与。

热门文章

最新文章