野蝇 10 |暗流 |创建可以访问 RequestContext 的 Wildfly LoginModule
WildFly 10 | Undertow | Create Wildfly LoginModule with access to RequestContext
我正在尝试为 wildfly 10 创建一个可以访问请求上下文的登录模块。我必须确定请求 url。我还必须分析 GET 参数以检查是否设置了令牌。
如何在基于 "UsernamePasswordLoginModule" 的 class 中访问请求上下文和 url 信息?
我试过了
@Resource
WebServiceContext wsctx;
但是没用。
您应该实现一些预处理器以将请求参数保存到某个 ThreadLocal 变量中(例如,您可以在 Web 过滤器中执行此操作)。然后在您的登录模块中,您将能够从 ThreadLocal 中读取此参数。
我已经尝试了你的建议。但它不起作用。网络过滤器不调用。
在第二步中我尝试了以下方法
try {
HttpServletRequest request = (HttpServletRequest) javax.security.jacc.PolicyContext
.getContext(HttpServletRequest.class.getName());
} catch (PolicyContextException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果是该方法可能会在此时终止 (getContext) 并重新提交请求。不知道为什么。
我正在尝试为 wildfly 10 创建一个可以访问请求上下文的登录模块。我必须确定请求 url。我还必须分析 GET 参数以检查是否设置了令牌。
如何在基于 "UsernamePasswordLoginModule" 的 class 中访问请求上下文和 url 信息?
我试过了
@Resource WebServiceContext wsctx;
但是没用。
您应该实现一些预处理器以将请求参数保存到某个 ThreadLocal 变量中(例如,您可以在 Web 过滤器中执行此操作)。然后在您的登录模块中,您将能够从 ThreadLocal 中读取此参数。
我已经尝试了你的建议。但它不起作用。网络过滤器不调用。
在第二步中我尝试了以下方法
try {
HttpServletRequest request = (HttpServletRequest) javax.security.jacc.PolicyContext
.getContext(HttpServletRequest.class.getName());
} catch (PolicyContextException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果是该方法可能会在此时终止 (getContext) 并重新提交请求。不知道为什么。