Spring Security part7—前后端分离的认证
前后端分离下的认证流程
大概描述下的认证流程
在前后端分离架构中,Spring Security
的认证流程与传统的单体应用有所不同
前后端分离认证的核心特点
无状态:服务器不存储用户会话信息,依赖客户端携带的令牌(Token)进行身份验证
跨域:前后端通常部署在不同域名下,需要处理
CORS(跨域资源共享)
令牌交互:使用 JWT(JSON Web
Token)等令牌代替传统的 Session-ID
分离部署:前端(如 Vue/React)和后端(Spring
Boot)独立部署,通过 RESTful API 通信
认证流程可以大概说为如下:
首先,前端发起了登录的请求
前端收集用户输入的用户名 / 密码,通过 POST
请求发送到后端的登录接口(如/api/login)
后端收到请求开始进行认证处理:
用户名密码验证:
Spring...
Redis part3—Redis在Spring框架下的开发使用
Redis进阶
Redis 事务
相关内容
Redis的事务和 MySQL
的本质上是差不多的,都是保证一组命令要么都执行要么都不执行
Redis
是将多个命令打包,主要用于解决需要批量操作且保证操作完整性的场景。
Redis 事务的设计基于 “命令队列” 和 “单线程执行”
特性,核心原理可以概括为:将一组命令一次性放入队列,在执行时按顺序原子化执行,中间不会被其他命令插入。
Redis 事务的执行分为 3 个阶段:开始事务→命令入队→执行 /
放弃事务,流程如下:
开始事务:执行MULTI命令,Redis
进入事务状态。
命令入队:后续输入的命令(如SET、INCR等)不会立即执行,而是被放入事务队列,并返回
“QUEUED” 表示入队成功。
若命令存在语法错误(如参数个数不对),入队时会直接报错,此时事务队列无效,后续EXEC会被忽略。
执行 /...
了解和会使用XSLT
什么是XSLT
XSLT(Extensible Stylesheet Language
Transformations,可扩展样式表语言转换)是一种用于将 XML
文档转换为其他格式(如 HTML、XML、文本等)的语言。它是 XML
技术体系中的重要组成部分,常被视为 XML 的 “转换引擎”。
XSLT 的主要功能是将一种 XML
结构转换为另一种结构或格式,实现数据与表现形式的分离:
将 XML 数据转换为 HTML 用于网页展示
将 XML 数据转换为其他 XML 格式(如不同行业标准的 XML)
将 XML 数据转换为纯文本、CSV 等格式
而其中
XSLT 本身是 XML 的一种应用,遵循 XML 语法规则
XSLT 使用 XPath(XML 路径语言)来定位和选择 XML 节点
可以将多个 XSLT 转换串联使用,实现复杂的数据处理流程
XSLT 的工作原理
XSLT 处理器解析源 XML 文档,构建 DOM 树
解析 XSLT...
n8n本地部署和搭建第一个工作流
n8n 简介
简介
n8n
是一个开源的工作流自动化工具,专注于通过可视化界面连接各种应用程序、服务和
API,实现数据流转和任务自动化。其核心特点包括:
开源免费:核心功能完全开源,可本地部署,数据隐私可控,适合对数据安全有较高要求的场景。
可视化编辑器:通过拖拽节点(Nodes)和连接流程线,无需代码即可构建复杂工作流,支持自定义节点扩展。
丰富的集成能力:内置数百个节点,覆盖常见服务(如
Gmail、Slack、GitHub、数据库、云服务等),支持 HTTP/API
调用连接任意服务。
灵活的触发方式:支持定时触发、Webhook
触发、手动触发等,满足不同自动化场景(如数据同步、通知提醒、批量处理等)。
本地部署与云服务兼顾:既可以通过 npm、Docker
等方式在本地服务器部署,也提供官方云服务(n8n
Cloud),适合个人开发者和企业用户。
n8n 与同类型平台(如
Dify、Make、Zapier 等)的对比
与 Dify 对比
Dify
更侧重于大语言模型(LLM)应用开发,核心是帮助用户快速搭建基于
AI...
Spring Security part5—密码加密算法
密码加密
何为密码加密
在 Spring Security 中,密码加密是保障系统安全的核心环节之一。Spring
Security
通过PasswordEncoder接口统一规范了密码加密与验证的行为,其核心思想是:存储加密后的密码而非明文,并通过标准化方法验证用户输入的密码与存储的加密密码是否匹配。
明文密码指的是用户输入的原始密码(如abc123、password),未经过任何加密或哈希处理,直接以字符串形式存储在数据库中。
但不是你加密了就不能破解,早期系统会使用哈希算法对密码进行处理:将明文密码通过哈希函数转换为一串不可逆的哈希值(如MD5("123456") = e10adc3949ba59abbe56e057f20f883e),然后存储哈希值而非明文。
彩虹表
但是这样,是双向加密,是可以被解密的,彩虹表(Rainbow
Table)...
ErgouTree菜谱之糖醋排骨
ErgouTree...
Spring Security part6—Spring Security的默认配置与过滤器链的自动装配
Spring Security
默认配置源码分析
在 Spring Security
的官方文档中,说明了,它的配置为以下的默认实现。
12345678910111213141516@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http // 开启授权保护 .authorizeRequests(authorize -> authorize // 所有请求开启授权保护 .anyRequest() // 已经认证的请求会被自动授权 .authenticated() ) // 自动使用表单的授权方式,也就是自动生成的登入表单和登出表单 .formLogin(withDefaults()) // 使用基本授权方式 .httpBasic(withDefaults()); return...
Redis part2—Redis的基本命令和数据结构
Redis的常用命令
Redis 的两种命令
Redis 有两种命令
在 Windows 的 cmd 命令提示符中,可以在不进入 Redis
内部终端的情况下执行 Redis
命令,一般格式是:redis-cli.exe [options] command [arguments]
,options 是连接相关的参数,command 是具体的
Redis 命令,arguments 是命令的参数。
关于这个部分的命令,常用的比较少,下面说的常用命令都是基于第二种
一般情况下,我们在 Redis 内部终端输入命令,要进入 Redis
内部终端,你需要先连接到 Redis
服务器,打开命令提示符,redis-server.exe redis.conf即可启动
。如果 Redis 已经启动,和MySQL 一样,Redis 也需要新建连接,在 Windows
环境下,可以进入 Redis 安装目录,之后使用如下格式的命令新建链接,执行
redis-cli.exe -h 127.0.0.1 -p 6379 (默认端口是...
Maven常见报错分析和在开发中使用的小技巧
纯属想到想到想到哪里写哪里了,我单纯就是顺着我的思路写个杂谈,大伙看一乐就行
Maven笑传之藏藏bean
可能这个问题,大家不嗷嗷鼓捣
Maven,可能一辈子碰不上好几次,但是我还是要说说,要不然白摸索了))
一些通用的解决情况
孩子们,我是Maven,我又要找不到依赖了
实际上,有关于实际项目开发的过程中,因为 Maven
没法正常编译项目的原因,十个有八个会给你爆“找不到依赖”,这个问题藏的很深,而且那原因非常抽象,要么不知所云,要么你就不知道他为什么找不到。
如果你能通过先清除 IDEA
的缓存,然后经典三大步(clean,complie,package)就好了
那其实都不是问题,只是 Maven
在它能访问的仓库里,没找到你声明的依赖信息(或完整文件)
再说另一种情况
在线或离线网络环境中拷贝maven仓库到离线机器,使用maven加载项目,maven编译jar包找不到或者提示jar包信息不可用
然后我们进行了如下操作
常规 idea的 maven设置,确保
maven的版本, 配置文件保持一致,
maven仓库可用
刷新...
Redis part1—介绍NoSQL和缓存技术
介绍 Redis
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的
key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD
协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的
API。
Redis
通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted
sets)等类型。
Redis 简介
Redis(Remote Dictionary Server)是一个开源的内存数据库,遵守...













