环境:
jdk:19
dubbo:3.2.0.beta-5
springboot: 3.0.4
这是我的 dubbo 过滤器
@Activate(group = CommonConstants.CONSUMER, value = "cookieValidationFilter")
public class CookieValidationFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
RpcContext context = RpcContext.getServerContext();
return invoker.invoke(invocation);
}
}
这是我的 controller:
@DubboReference
UserService userService;
@PostMapping(value = "/sign_in", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public ServerResponseEntity<Object> loginController(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
RpcContext context = RpcContext.getServerContext();
System.out.println("rest 接口");
System.out.println(context.getProtocol());
System.out.println(context.getRemoteAddressString());
System.out.println("-----------------------------------------");
String userInfo = serverHttpRequest.getHeaders().getFirst(USERINFO);
ServerResponseEntity<Object> responseEntity = userService.loginService(userInfo);
serverHttpResponse.addCookie(ResponseCookie.from("COOKIE_ID", String.valueOf(responseEntity.getData())).build());
return responseEntity;
}
这是我的 service:
@Override
public ServerResponseEntity<Object> loginService(String userInfo) {
try {
responseEntity = new ServerResponseEntity<>(0, "login success!", Decryptor.decrypt(userInfo));
} catch (Exception e) {
logger.info(e.toString());
}
return responseEntity;
}
这是我的 consumer 配置文件:
server.port=8081
spring.application.name=consumer
spring.cloud.nacos.discovery.server-addr=192.168.220.128:8848
dubbo.application.name=consumer
dubbo.registry.address=nacos://192.168.220.128:8848
dubbo.protocol.port=-1
dubbo.consumer.protocol=tri
dubbo.consumer.filter=appended
dubbo.application.qos-port=22223
这是打印结果:
这是客户端连续两次调用 /sign_in 的打印结果
rest 接口
null
null:0
-----------------------------------------
rest 接口
tri
null:0
-----------------------------------------
问:为什么前后两次协议打印结果不一样,第一次 null ,第二次是 tri
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.