首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Redis会话管理的Spring网关的工作示例?

使用Redis会话管理的Spring网关的工作示例?
EN

Stack Overflow用户
提问于 2018-12-26 00:43:09
回答 1查看 1.2K关注 0票数 14

你能指出任何书面或视频教程的春云启动网关的工作实例吗?使用session data-redis、Spring 2和可能的相关库(例如spring安全性)?

基本上,我想在微服务环境中使用服务器。我还想使用SpringBoot2.x,整个系统都是基于反应原理的。

我发现了很多例子,如何使用Redis速率限制器来设置spring云入门网关服务器。我有一个网关服务器的工作版本,但它没有使用基于Redis的会话管理。当我在图片中放置Redis for会话时,我将面临各种例外。因此,任何可行的例子都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-05-22 14:04:37

正如您所提到的,Spring的关键是反应性。因此,通过推荐,交叉关注(过滤器)应该积极地实施.这是一个示例,还有我通常看到的人们实现的东西(安全性、Resiliency和路由器)。这个例子利用了自动配置的优势,意味着在需要redis的过滤器的情况下,它将搜索是否已经有一个Bean来管理redis连接,比如ReactiveRedisConnectionFactory (LettuceConnectionFactory - non,means )。

在会话管理方面,只需要:

代码语言:javascript
运行
复制
@Configuration
@EnableRedisWebSession

在安全性方面,仅仅需要(其中ServerHttpSecurity是webflux的构建器,可以构建到您的需求: oauth2.0等):

代码语言:javascript
运行
复制
@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {...}

在限速器的情况下,只需要:

代码语言:javascript
运行
复制
@Bean
public RedisRateLimiter redisRateLimiter() {
    return new RedisRateLimiter(5, 7); // replenishRate, burstCapacity
}

@Bean
public RouteLocator appRouteLocator(RouteLocatorBuilder builder, RedisRateLimiter redisRateLimiter) {
  ... .requestRateLimiter(rl -> rl.setRateLimiter(redisRateLimiter)) // see example
}

最后,Spring安全和网关都处理过滤器(责任链),您也可以通过配置文件(properties/yaml)配置它。下面是一个非常抽象的图表过滤器及其与红色的关系。

举个例子,我在码头上使用了红宝石。这是对网关路由的呼叫跟踪。

代码语言:javascript
运行
复制
1653227794.371458 [0 lua] "TIME"
1653227794.371488 [0 lua] "get" "request_rate_limiter.{user}.tokens"
1653227794.371550 [0 lua] "get" "request_rate_limiter.{user}.timestamp"
1653227794.371610 [0 lua] "setex" "request_rate_limiter.{user}.tokens" "2" "6"
1653227794.371653 [0 lua] "setex" "request_rate_limiter.{user}.timestamp" "2" "1653227794"
1653227802.789329 [0 172.17.0.1:37156] "EXISTS" "spring:session:sessions:64050a1e-eaf5-4b4f-9a82-12a008389dd9"
1653227802.792697 [0 172.17.0.1:37156] "HSET" "spring:session:sessions:64050a1e-eaf5-4b4f-9a82-12a008389dd9" "lastAccessedTime" "\xac\xed\x00\x05sr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x01\x80\xec\x0e/\xbc"
1653227802.794683 [0 172.17.0.1:37156] "EXPIRE" "spring:session:sessions:64050a1e-eaf5-4b4f-9a82-12a008389dd9" "1800"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53926560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档