diff --git a/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsAuthTokenCacheAutoConfiguration.java b/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenMemoryCacheAutoConfiguration.java similarity index 91% rename from kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsAuthTokenCacheAutoConfiguration.java rename to kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenMemoryCacheAutoConfiguration.java index d1428b72c..750407628 100644 --- a/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsAuthTokenCacheAutoConfiguration.java +++ b/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenMemoryCacheAutoConfiguration.java @@ -22,7 +22,7 @@ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ -package cn.stylefeng.roses.kernel.auth.starter; +package cn.stylefeng.roses.kernel.auth.starter.cache; import cn.hutool.cache.CacheUtil; import cn.hutool.cache.impl.TimedCache; @@ -34,7 +34,7 @@ import cn.stylefeng.roses.kernel.auth.session.cache.catoken.MemoryCaClientTokenC import cn.stylefeng.roses.kernel.auth.session.cache.logintoken.MemoryLoginTokenCache; import cn.stylefeng.roses.kernel.auth.session.cache.loginuser.MemoryLoginUserCache; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -50,7 +50,8 @@ import static cn.stylefeng.roses.kernel.cache.api.constants.CacheConstants.NONE_ * @date 2020/11/30 22:16 */ @Configuration -public class GunsAuthTokenCacheAutoConfiguration { +@ConditionalOnMissingClass("org.springframework.data.redis.connection.RedisConnectionFactory") +public class GunsAuthTokenMemoryCacheAutoConfiguration { /** * 登录用户的缓存,默认使用内存方式 @@ -61,7 +62,6 @@ public class GunsAuthTokenCacheAutoConfiguration { * @date 2021/1/31 21:04 */ @Bean - @ConditionalOnMissingBean(name = "loginUserCache") public CacheOperatorApi loginUserCache() { Long sessionExpiredSeconds = AuthConfigExpander.getSessionExpiredSeconds(); TimedCache loginUsers = CacheUtil.newTimedCache(1000L * sessionExpiredSeconds); @@ -77,7 +77,6 @@ public class GunsAuthTokenCacheAutoConfiguration { * @date 2021/1/31 21:04 */ @Bean - @ConditionalOnMissingBean(name = "allPlaceLoginTokenCache") public CacheOperatorApi> allPlaceLoginTokenCache() { TimedCache> loginTokens = CacheUtil.newTimedCache(NONE_EXPIRED_TIME); return new MemoryLoginTokenCache(loginTokens); @@ -90,7 +89,6 @@ public class GunsAuthTokenCacheAutoConfiguration { * @date 2022/3/15 17:25 */ @Bean - @ConditionalOnMissingBean(name = "loginErrorCountCacheApi") public CacheOperatorApi loginErrorCountCacheApi() { TimedCache loginTimeCache = CacheUtil.newTimedCache(LoginCacheConstants.LOGIN_CACHE_TIMEOUT_SECONDS * 1000); return new LoginErrorCountMemoryCache(loginTimeCache); @@ -103,7 +101,6 @@ public class GunsAuthTokenCacheAutoConfiguration { * @date 2022/5/20 11:52 */ @Bean - @ConditionalOnMissingBean(name = "caClientTokenCacheApi") public CacheOperatorApi caClientTokenCacheApi() { TimedCache loginTimeCache = CacheUtil.newTimedCache(NONE_EXPIRED_TIME); return new MemoryCaClientTokenCache(loginTimeCache); diff --git a/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenRedisCacheAutoConfiguration.java b/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenRedisCacheAutoConfiguration.java new file mode 100644 index 000000000..aa518ee91 --- /dev/null +++ b/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenRedisCacheAutoConfiguration.java @@ -0,0 +1,105 @@ +/* + * Copyright [2020-2030] [https://www.stylefeng.cn] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Guns源码头部的版权声明。 + * 3.请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns + * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns + * 6.若您的项目无法满足以上几点,可申请商业授权 + */ +package cn.stylefeng.roses.kernel.auth.starter.cache; + +import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; +import cn.stylefeng.roses.kernel.auth.cache.LoginErrorCountRedisCache; +import cn.stylefeng.roses.kernel.auth.session.cache.catoken.RedisCaClientTokenCache; +import cn.stylefeng.roses.kernel.auth.session.cache.logintoken.RedisLoginTokenCache; +import cn.stylefeng.roses.kernel.auth.session.cache.loginuser.RedisLoginUserCache; +import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; +import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; + +import java.util.Set; + + +/** + * 认证和鉴权模块的自动配置 + * + * @author fengshuonan + * @date 2020/11/30 22:16 + */ +@Configuration +@ConditionalOnClass(name = "org.springframework.data.redis.connection.RedisConnectionFactory") +public class GunsAuthTokenRedisCacheAutoConfiguration { + + /** + * 登录用户的缓存,默认使用内存方式 + *

+ * 如需redis,可在项目创建一个名为 loginUserCache 的bean替代即可 + * + * @author fengshuonan + * @date 2021/1/31 21:04 + */ + @Bean + public CacheOperatorApi loginUserCache(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory); + return new RedisLoginUserCache(redisTemplate); + } + + /** + * 登录用户token的缓存,默认使用内存方式 + *

+ * 如需redis,可在项目创建一个名为 allPlaceLoginTokenCache 的bean替代即可 + * + * @author fengshuonan + * @date 2021/1/31 21:04 + */ + @Bean + public CacheOperatorApi> allPlaceLoginTokenCache(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate> redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory); + return new RedisLoginTokenCache(redisTemplate); + } + + /** + * 登录错误次数的缓存 + * + * @author fengshuonan + * @date 2022/3/15 17:25 + */ + @Bean + public CacheOperatorApi loginErrorCountCacheApi(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory); + return new LoginErrorCountRedisCache(redisTemplate); + } + + /** + * CaClient单点登录token的缓存 + * + * @author fengshuonan + * @date 2022/5/20 11:52 + */ + @Bean + public CacheOperatorApi caClientTokenCacheApi(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = CreateRedisTemplateUtil.createString(redisConnectionFactory); + return new RedisCaClientTokenCache(redisTemplate); + } + +} diff --git a/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories b/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories index d4a9b0a15..db95d768f 100644 --- a/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -1,5 +1,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ cn.stylefeng.roses.kernel.auth.starter.GunsAuthAutoConfiguration,\ cn.stylefeng.roses.kernel.auth.starter.GunsSsoAutoConfiguration,\ - cn.stylefeng.roses.kernel.auth.starter.GunsAuthTokenCacheAutoConfiguration,\ + cn.stylefeng.roses.kernel.auth.starter.cache.GunsAuthTokenMemoryCacheAutoConfiguration,\ + cn.stylefeng.roses.kernel.auth.starter.cache.GunsAuthTokenRedisCacheAutoConfiguration,\ cn.stylefeng.roses.kernel.auth.starter.GunsPasswordRsaPropAutoConfiguration \ No newline at end of file