随笔分类 - SpringSecurity+Redis
摘要:今天无意间看到原来 SpringSecurity 自带了 CSRF 防御处理,所以记录下,不得不说 SpringSecurity 功能还是挺强大的,蛮多业务场景都提供了支持。 CSRF 就是跨域请求伪造,英文全称是 Cross Site Request Forgery。这是一种非常常见的 Web 攻
阅读全文
摘要:一、SpringBoot 缓存原理探究 1、SpringCache 介绍 在SpringBoot中,数据的缓存管理存储依赖于Spring框架中cache相关的org.springframework.cache.Cache和org.springframework.cache.CacheManager缓
阅读全文
摘要:一、业务场景:同步锁的问题与分布式锁的应用 1、redis的基本命令 (1)SETNX命令(SET if Not eXists) 语法:SETNX key value 功能:当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动
阅读全文
摘要:一、问题描述 使用 Spring Security 开发登录鉴权校验时,发现部分用户报错:Reason: Cannot pass null or empty values to constructor in spring security ERROR ***.security.JWTLoginFil
阅读全文
摘要:分布式锁一般有三种实现方式:1、数据库乐观锁;2、基于Redis的分布式锁;3、基于ZooKeeper的分布式锁。 本篇博客将介绍第二种方式,基于Redis实现分布式锁,网上有很多错误的示例,所以在这里将详细介绍如何正确地实现Redis分布式锁。 一、可靠性 首先,为了确保分布式锁可用,我们至少要确
阅读全文
摘要:Redis 是一个开源的内存数据库,它以键值对的形式存储数据。由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis 也提供了持久化存储机制,将数据以某种形式保存在文件中,每次重启时,可以自动从文件加载数据到内存当中。 Redis 的架构包
阅读全文
摘要:一、什么情况下需要布隆过滤器? 1、先来看几个比较常见的例子: 字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上 在网络爬虫里,一个网址是否被访问过 yahoo, gmail 等邮箱垃圾邮件过滤功能 这几个例子有一个共同的特点: 如何判断一个元素是否存
阅读全文
摘要:一、为什么使用 redis 在项目中使用 redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用 redis。因此,这个问题主要从性能和并发两个角度去答。如下
阅读全文
摘要:在大多数互联网应用中,缓存的使用方式如下: 1、当业务系统发起某一个查询请求时,首先判断缓存中是否有该数据; 2、如果缓存中存在,则直接返回数据; 3、如果缓存中不存在,则再查询数据库,然后返回数据。 了解了上述过程后,下面说说 redis 缓存三大问题及解决方案。 一、缓存穿透 关键词:穿过 Re
阅读全文
摘要:一、redis 简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 1、Redis 与其他 key - value 缓存产品有以下三个特点: (1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 (2)Red
阅读全文
摘要:一、需求分析 在同一个系统中,我们可能只允许一个用户在一个终端上登录,一般来说这可能是出于安全方面的考虑,但是也有一些情况是出于业务上的考虑。要实现一个用户不可以同时在两台设备上登录,我们有两种思路: 后来的登录自动踢掉前面的登录,就像大家在扣扣中看到的效果。 如果用户已经登录,则不允许后来者登录。
阅读全文
摘要:先说解决方案吧,我们代码里的解决方案: .antMatchers("/examRoom/find").permitAll() .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() // 关键这行,就是允许Prefight预检请求 .a
阅读全文
摘要:一、AuthenticationEntryPoint简介 AuthenticationEntryPoint是Spring Security Web一个概念模型接口,顾名思义,他所建模的概念是:“认证入口点”。 它在用户请求处理过程中遇到认证异常时,被ExceptionTranslationFilte
阅读全文
摘要:最近入手做Java项目,使用SpringBoot和安全框架SpringSecurity,之前也总结了很多问题解决的博客,可以查看之前博客,这篇是决定把整个流程及大致代码记录一下,当然我只贴关键代码流程哦。 一、流程和代码详解 1、首先需要导入核心依赖 <!-- spring security-->
阅读全文
摘要:一、问题背景及解决方案 SpringBoot整合SpringSecurity整合都正常。但是就是偶尔时不时有个报错,貌似不影响功能,但是很烦。具体报错如下: io.jsonwebtoken.SignatureException: JWT signature does not match locall
阅读全文
摘要:在 SpringSecurity 的自定义登录拦截中,使用了 jackson 去获取请求流解析成实体类实例对象。如: // 登录是否含手机号 User voUser = new ObjectMapper().readValue(req.getInputStream(), User.class); i
阅读全文
摘要:项目使用SpringSecurity进行安全管理,之前登录接口都是好好的,今天突然验证码登录一直报403,最后发现问题所在,记录一下。 一、问题背景与解决方案 因为前端登录注册使用差不多相同的流程,所以使用了 mixins ,表单对象如下: loginForm: { phoneNum: '', pa
阅读全文
摘要:一、SpringDataRedis简介 1、Redis:redis是一款开源的Key-Value数据库,运行在内存中,由C语言编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 等。 2、Jedis:Jedis是Redis官方推出的一款面向Java的客户
阅读全文
摘要:一、方法安全 除了基于URL的认证与授权,开发者也可以通过注解来灵活地配置方法安全,要使用相关注解,首先要通过@EnableGlobalMethodSecurity注解开启基于注解的安全配置: @Configuration @EnableGlobalMethodSecurity(prePostEna
阅读全文
摘要:Spring Security提供了多种密码加密方案,官方推荐使用BCryptPasswordEncoder,BCryptPasswordEncoder使用BCrypt强哈希函数,开发者在使用时可以选择提供strength和SecureRandom实例。strength越大,密钥的迭代次数越多,密钥
阅读全文