gpt4 book ai didi

java - 如何在 Tomcat 7 中以编程方式检索登录配置?

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:33 25 4
gpt4 key购买 nike

在 Tomcat 7 上,我设置了一个 Realm 来让容器管理身份验证过程。我还使用相应的 <security-constraint> 设置了 web.xml和

<login-config>
<auth-method>FORM</auth-method>
<realm-name>MyRealm</realm-name>
<form-login-config>
<form-login-page>/public/login.jsp</form-login-page>
<form-error-page>/public/loginError.html</form-error-page>
</form-login-config>
</login-config>

根据用户在 login.jsp 中选择的登录协议(protocol)(直接或通过 OAuth),流程可能会重新路由到一个 servlet,在调用 HttpServletRequest.login() 之前我必须在其中管理一些东西如果它继续。

如果没有,我想将流程重新路由回登录页面(即 HttpServletResponse.sendRedirect()

我的问题是:在我的 servlet 中,如何以编程方式检索在 web.xml 中设置的登录页面?

我知道 loginConfig 可以在 StandardContext 中检索到但由于安全原因,它似乎无法访问 (StandardContext 被包装在 ApplicationContext 中,而 ApplicationContext 又被包装到 ApplicationContextFacade 中,这是我唯一设法检索到的东西)

有人知道如何获取该信息吗?

谢谢!

最佳答案

没有 public API在当前的 Servlet 3.1 版本中可用,因此在 Tomcat 7 使用的 Servlet 3.0 中也不可用。您需要自己解析 web.xml 以提取感兴趣的信息。

这是开始的单行代码。

String formLoginPage = XPathFactory.newInstance().newXPath().compile("web-app/login-config/form-login-config/form-login-page").evaluate(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(getServletContext().getResourceAsStream("/WEB-INF/web.xml")));

ServletContextListener#contextInitialized()HttpServlet#init() 期间执行一次就足够了。

关于java - 如何在 Tomcat 7 中以编程方式检索登录配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700252/

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