1.RememberMe简介及用法

简介: ascascas

1.基本简介

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,会发现登录窗口多了一个勾选框,当我们勾选之后,登录。之后关闭浏览器再次访问上述地址,就会发现无需重复登录了。
注意这里不要重启后端服务

REMEMBERMEONTHISCOMPUTER.

PLEASESIGNIN

SIGNIN

SERNAME

PASSWORD


那么这一切就因为多了一个勾选框就实现的流程,到底是怎么实现的呢?我们大概可以猜出来他会告诉服务端是否开启RememberMe功能,当请求后,我们会发现响应头多了一个Set-Cookie参数,如下图:

SET-COKIE:RERENBER-RE-ANF2NDVETONTIK4WLIWI4W2A1010XTNXTWFHZTG1NOGRZINLZY1MIMOTJIYJAYZTU4;NAX-IGE=128960EXPIRES=TUE,

ET-COOKIE:JSESSI0ND=C81B63662955561827D92A4C4E6B6FB;PATH=/;HTP0NLY


在响应头给了一个remember-me的字符串,以后所有的请求头Cookie字段都会自动携带这个令牌,服务端可以利用该令牌校验用户身份是否合法。
大致流程如上所述,但是读者们应该想起来我们前面说的问题了,这种令牌一旦泄露,不怀好意的Ikun们可以拿这个令牌随意访问系统,从而给系统带来风险和性能压力。怎么优化呢?
类似于我们前面的自定义认证一样,将Token持久化到DB即可。这里我们也可以做进一步的二次校验,从而保证系统的全局安全。

若有收获,就点个赞吧


相关文章
|
Linux 测试技术 Shell
Linux expect命令详解
在Linux系统中,expect 是一款非常有用的工具,它允许用户自动化与需要用户输入进行交互的程序。本文将深入探讨expect命令的基本语法、使用方法以及一些最佳实践。
1076 5
Linux expect命令详解
|
负载均衡 监控 算法
Finagle:构建可靠的分布式系统的利器
今天介绍一个强大的工具,它能够帮助您构建可靠的分布式系统 - **Finagle**。作为一个开源的网络通信框架,Finagle在大规模分布式系统中扮演着至关重要的角色。它以其可扩展性、灵活性和高度可定制的特性而受到广泛赞誉。让我们一起深入了解Finagle,并探索它如何帮助您构建稳健的分布式应用程序。
411 0
|
7月前
|
安全 Java 数据安全/隐私保护
|
7月前
|
JSON Java 数据格式
|
JSON API 定位技术
批量解析地址的API
批量解析地址的API
853 1
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之DataWorks中临时表和临时变量在holo中的用法如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
411 1
|
传感器 机器学习/深度学习 算法
基于PDR算法实现行人惯性导航附matlab代码
基于PDR算法实现行人惯性导航附matlab代码
|
消息中间件 运维 监控
多类型业务消息专题-普通消息 | 学习笔记(一)
快速学习多类型业务消息专题-普通消息
271 0
 多类型业务消息专题-普通消息 | 学习笔记(一)
|
芯片 内存技术 Perl
【全栈计划 —— 单片机】——Part_02 结合LED灯,拿捏底层输入输出(2)
【全栈计划 —— 单片机】——Part_02 结合LED灯,拿捏底层输入输出(2)
1204 0
【全栈计划 —— 单片机】——Part_02 结合LED灯,拿捏底层输入输出(2)

热门文章

最新文章