SpringSecurity学习笔记之 入门 十 一(oauth2.0整合 redis保存token)

之前我们的token都是保存在内存中。这是不合理的。【反正教程是这么写的】,可能是他的token有别于jwt的token吧。因为每次重启服务器就失效了嘛。。那就应该是临时token了。。
这里我们就把他的资源访问token进行缓存redis
maven:
redis依赖:
spring-boot-starter-data-redis
对象池依赖:
commons-pool2

原因:

放在内存中token有可能丢失,放关系数据库,效率低,所以采用redis

配置:

在刚才配置密码模式的地方,进行配置

在授权管理器后方.tokenStore();里面需要一个tokenStore;我们去配置一个!
创建一个RedsiConfig配置类,在里面返回一个@Bean=>TokenStore;配置这个需要一个redis连接工厂 我们直接注入进来,RedisConnectionFactory;

然后我们new 一个RedisTokenStore,将连接工厂给他。让他返回
【security本身就准备了这个RedisTokenStore,已经准备好了我们给他一个连接工厂】

@Configuration
public class RedisConfig {
    @Autowired
    private RedisConnectionFactory redisConnectionFactory;
    @Bean
    public TokenStore redisTokenStore(){
        return new RedisTokenStore(redisConnectionFactory);
    }
}

然后回到我们刚才配置密码模式的地方将tokenStore注入进来并交给他

/**
     * 密码模式配置
     * @param endpoints
     * @throws Exception
     */
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints
                //自定义登录逻辑,我们把之前自定义的登录逻辑类注进来填进去(实现UserDetailService的类)
                .userDetailsService(userDetailsService)
                //配置授权管理器
                .authenticationManager(authenticationManager)
                //redis保存token配置
                .tokenStore(tokenStore);
        ;
    }

到这就完成了。token信息就会保存在redis;
这里会有一个坑

这里是由于低版本的redis并不能很好的支持oauth2的redis。需要升级oauth的版本,但是由于oauth会经过springboot的二次封装,又变回springboot的版本。。这里有两个解决办法,
1;提升boot版本号
2;屏蔽boot中的版本。另外导入

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-oauth2</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.security.oauth</groupId>
                    <artifactId>spring-security-oauth2</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.3.3.RELEASE</version>
        </dependency>

如果提升boot版本后依然不行,直接引入2.3.3版本

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值