随笔分类 -  SpringSecurity+Redis

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

点击右上角即可分享
微信分享提示