1.RememberMe简介及用法

简介: RememberMe是一种服务器端会话保持机制,用户勾选后关闭浏览器再打开无需重新登录。其通过Cookie存储令牌实现自动认证,避免频繁输入账号密码,提升用户体验,同时需注意安全风险与优化策略。

6⌥codecode6⌥codecode

1.RememberMe简介及用法

1.RememberMe简介及用法

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

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")

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

油炸小波

2023-08-22 10:15

281

0

IP 属地广东

举报

分享到:

注册 / 登录 语雀进行评论

726字

关于语雀使用帮助数据安全服务协议English快速注册

Ctrl + J

大纲

1.基本简介

2.基本用法

1.注册配置信息

2.重启验证功能

Adblocker


相关文章
|
8月前
|
安全 Java 数据安全/隐私保护
认识SpringSecurity
Spring Security 是基于过滤器链的成熟安全框架,提供认证、鉴权及防御 CSRF 等攻击的核心功能,支持多种认证方式与灵活的权限控制模型。
|
5月前
|
人工智能 架构师 程序员
AI真的会抢走工作吗?Anthropic最新研究给出了第一份真实数据
Anthropic最新报告《AI对劳动力市场的影响》基于真实使用数据、职业任务与统计分析,揭示AI尚未导致失业,但正加速重塑白领岗位:程序员75%任务可被覆盖,而厨师、维修工等物理型职业几乎不受影响;AI当前主攻“增强”而非“替代”,但初级岗位招聘已下降14%。
|
6月前
|
存储 人工智能 网络安全
OpenClaw(Clawdbot)阿里云零基础部署,打造QQ社群智能助手,自动化运营全攻略
社群运营常常陷入“重复劳动多、核心价值少”的困境:新人入群反复提问相同问题、高质量讨论被闲聊覆盖、活动报名统计耗时耗力、社群活跃度逐渐下滑。而OpenClaw(曾用名Clawdbot、Moltbot)作为功能强大的开源AI框架,搭配NapCat QQ协议层,能轻松打造一站式QQ社群智能助手,实现智能问答、精华沉淀、活动管理、互动活跃全自动化,让社群运营从“被动应对”变为“主动赋能”。
1335 19
|
8月前
|
测试技术 数据处理 微服务
基于稳定版量化交易系统开发案例设计的功能需求实现
在数字化时代,量化交易系统需兼顾高效性与稳定性。本文聚焦稳定版系统开发,探讨案例设计与功能需求,涵盖微服务架构、实时行情、信号生成、风控等核心环节,为构建精准、可靠的量化交易体系提供实践指导。
|
8月前
|
SQL 容灾 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与微服务集成。首先下载并解压Seata Server,修改配置文件application.yml,并在Nacos中配置seataServer.properties及数据库信息。创建seata数据库并运行SQL脚本初始化事务表。启动TC服务后,注册至Nacos。各微服务引入Seata依赖,配置application.yml连接TC。为实现高可用,搭建多节点TC集群,通过Nacos统一管理事务组映射,实现异地容灾与动态切换。微服务从Nacos读取client.properties,灵活绑定TC集群,提升系统稳定性与可维护性。(238字)
|
7月前
|
机器学习/深度学习 人工智能 算法
给大模型“上上价值”:用PPO算法让AI更懂你的心
本文深入浅出讲解PPO算法——大模型“价值观对齐”的核心引擎。以教育孩子为喻,解析其“剪切更新”“优势估计”“KL约束”等机制,涵盖原理、实战(数据准备→奖励建模→五步微调)、避坑指南及DPO等前沿方向,助你让AI既聪明又懂你。(239字)
665 7
|
7月前
|
数据采集 人工智能 Cloud Native
企业如何建设数据系统(2026年1月最新)
2026年,AI Agent规模化落地,数据系统成企业智能核心。流式处理、AI原生架构、实时流批一体、合规前置与云原生混合部署成四大趋势。瓴羊Dataphin提供全生命周期数据治理方案,助力企业构建可信、高效、合规的数据资产体系。(239字)
|
1月前
|
安全 Linux API
在 OpenCode 中接入本地模型:Ollama 部署与配置完全指南
OpenCode火爆GitHub(17万星),但配置模型常卡壳。本文直击痛点,手把手教你15分钟用Ollama本地部署Qwen/Llama/CodeLlama等开源模型,并完成OpenCode对接——零API密钥、全离线运行,安全高效适配敏感开发场景。
|
2月前
|
人工智能 安全 小程序
互联网医院系统架构拆解:从在线问诊到电子处方的全链路设计
本文从系统架构角度拆解互联网医院的核心链路,围绕患者入口、在线问诊、医生工作台、电子处方、药师审方、支付履约、药品配送和数据安全等模块展开分析。文章强调,互联网医院不是简单的线上聊天工具,而是覆盖医疗服务全流程的数字化系统。其建设重点在于业务闭环、数据互通、合规留痕与用户体验。
|
5月前
|
机器学习/深度学习 编解码 算法
数值特征工程中的四种缩放方法:原理、适用场景与局限性
数值特征工程是机器学习关键预处理步骤,需应对量级差异(如年龄vs薪资)与异常值/偏斜分布问题。本文详解四种核心方法:标准化(均值0方差1)、Robust缩放(抗异常值)、幂变换(矫正偏斜)、归一化(0-1缩放),并用加州住房数据实操对比效果与适用场景。
462 1
数值特征工程中的四种缩放方法:原理、适用场景与局限性

热门文章

最新文章