在Eclipse Vert.x中能否通过ProxyContext同RoutingContext一样访问用户会话?
Vert.x ProxyInterceptor中通过ProxyContext访问会话的实现方法
可以通过ProxyContext间接访问会话,核心是从ProxyContext中获取对应的RoutingContext实例,之后就能和普通Web处理器一样操作会话了。
具体实现步骤
- 从
ProxyContext的请求对象中获取RoutingContext:通过context.request().context()方法拿到底层的RoutingContext - 调用RoutingContext的
session()方法获取会话对象,后续即可进行会话属性的读写操作
代码示例
public class SessionAwareProxyInterceptor implements ProxyInterceptor { @Override public void handle(ProxyContext context) { // 获取RoutingContext实例 RoutingContext routingContext = context.request().context(); // 访问会话(前提是已配置SessionHandler) Session session = routingContext.session(); if (session != null) { // 读取会话属性 String userToken = session.get("user_token"); // 设置会话属性 session.put("proxy_access_time", System.currentTimeMillis()); } // 必须调用next()让请求继续通过拦截链 context.next(); } }
注意事项
- 务必确保路由器已经配置了
SessionHandler,否则routingContext.session()会返回null - 处理完逻辑后一定要调用
context.next(),否则请求会被拦截中断
内容的提问来源于stack exchange,提问作者Chingu Chamela
相关产品推荐
相关产品推荐

