Spring Security(6)
您好,我是湘王,这是我的云海天,欢迎您来,欢迎您再来~
Spring Security使用MySQL保存cookie记录虽然方便,但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的,Spring Security也应该可以实现这个功能。之前Spring Security官方并不支持使用NoSQL来保存cookie,但这个问题对于一个爱钻研的码农来说应该只是个小CASE——毕竟只要有代码,就没有搞不定的问题——受JdbcTokenRepositoryImpl的启发,查看其源码,可以发现JdbcDaoSupport只是用来提供数据源,无实际意义,而PersistentTokenRepository才是要实现的接口。
JdbcTokenRepositoryImpl的源码非常简单,看懂了就能照着写出Mongo的实现。题外话:阅读源码是个能够很快提高开发能力的捷径,如Spring框架、Spark源码等等。
下面就来开始咱们的NoSQL改造DIY。
首先安装并运行mongodb(我用的是mongodb-4.2.6),可以是虚拟机,也可以是Docker。
再修改项目的pom.xml文件,增加mongodb依赖:
通过模仿JdbcDaoSupport,来自定义自己的MongoDaoSupport:
/** * MongoDaoSupport * * @author 湘王 */ @Component public class MongoDaoSupport<T> { @Autowired private MongoTemplate mongoTemplate; // 插入数据 public boolean insert(PersistentRememberMeToken token) { if (Objects.isNull(token)) { return false; } Object object = mongoTemplate.save(token); if (Objects.nonNull(object)) { return true; } return false; } }