gpt4 book ai didi

java - 如何拦截自定义 HTTP header 值并将其存储在 Wicket 的 WebSession 中?

转载 作者:行者123 更新时间:2023-12-01 19:21:46 28 4
gpt4 key购买 nike

我需要从每个请求中获取特定的自定义 HTTP header 值并将其放入 WebSession 中,以便以后可以在任何网页上使用它。 (我相信 Wicket 的方法是使用一个自定义类来扩展具有适当访问器的 WebSession。)

我的问题是,我需要什么样的过滤器(或其他机制)才能拦截 header 并访问 WebSession 来存储值?

我尝试使用普通的 Java EE 过滤器来做到这一点,使用

CustomSession session = (CustomSession) AuthenticatedWebSession.get();

但是(也许并不奇怪),这会产生:

java.lang.IllegalStateException: 
you can only locate or create sessions in the context of a request cycle

我是否应该扩展 WicketFilter 并在那里执行它(此时我可以访问 session 吗?),还是需要更复杂的东西?

当然,如果我做的完全错误,请指出;我是 Wicket 新手。

最佳答案

我猜你需要实现一个自定义的 WebRequestCycle:

public class CustomRequestCycle extends WebRequestCycle{

public CustomRequestCycle(WebApplication application,
WebRequest request,
Response response){
super(application, request, response);
String headerValue = request.getHttpServletRequest().getHeader("foo");
((MyCustomSession)Session.get()).setFoo(headerValue);
}

}

在您的 WebApplication 类中,您可以像这样注册自定义 RequestCycle:

public class MyApp extends WebApplication{

@Override
public RequestCycle newRequestCycle(Request request, Response response){
return new CustomRequestCycle(this, (WebRequest) request, response);
}

}

引用:

关于java - 如何拦截自定义 HTTP header 值并将其存储在 Wicket 的 WebSession 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914528/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com