j_security_check <Context path=""> 时不工作
j_security_check not working when <Context path="">
我在 tomcat/tomEE 服务器上使用 j_security_check
作为 JAAS 机制的一部分。
我目前有一个名为 "admin" 的上下文,它将登录过程作为一个单独的页面 (login.html),并且该登录页面的形式类似于:<form action="j_security_check" method="post">
使用适当的输入发送 j_username & j_password 属性。
那里一切正常。
需要说明的是,我的应用程序可以在例如"www.myapp.com/admin"
现在我被要求在域的根目录中添加另一个 webapp,"www.myapp.com",所以我将其添加到我的 conf/server.xml
:
`<Context
docBase="ROOT"
path=""
reloadable="true"
/>`
ROOT.war
包含需要在 www.myapp.com/
域路径中的 webapp。
我想做的是将 j_security_check
机制也添加到该上下文中(出于用户体验原因,应该在 AJAX
而不是 <form>
中完成)。
请注意,我已经设法在两种情况下都有 cookie,但是当我进行 www.myapp.com/j_security_check
调用时,我总是会收到 408 Request Timeout
响应。
如何从我的应用程序的根上下文路径执行 j_security_check
调用? (请不要使用外部登录页面)
问题是您没有遵循基于 FORM 的身份验证规则:您需要首先请求受保护的资源,然后让容器向您询问用户名和密码。身份验证成功后,容器会将您重定向到最初请求的资源。 Java Servlet Specification Version 3.0 的第 13.6.3 节对此进行了介绍。如果您想处理路过式登录,您需要自己来做。 Servlet 3.0 在 HttpServletRequest
对象上有 login
方法,您只需将 AJAX 请求提交到您自己的 servlet 而不是 j_security_check
.
请注意,您 server.xml
中的 <Context>
配置将导致无休止的混乱,并且会在同一台服务器上部署您的 ROOT Web 应用程序两次。只需将 ROOT.war
放入 Tomcat 的 webapps/
目录并让它自动部署。
我在 tomcat/tomEE 服务器上使用 j_security_check
作为 JAAS 机制的一部分。
我目前有一个名为 "admin" 的上下文,它将登录过程作为一个单独的页面 (login.html),并且该登录页面的形式类似于:<form action="j_security_check" method="post">
使用适当的输入发送 j_username & j_password 属性。
那里一切正常。
需要说明的是,我的应用程序可以在例如"www.myapp.com/admin"
现在我被要求在域的根目录中添加另一个 webapp,"www.myapp.com",所以我将其添加到我的 conf/server.xml
:
`<Context
docBase="ROOT"
path=""
reloadable="true"
/>`
ROOT.war
包含需要在 www.myapp.com/
域路径中的 webapp。
我想做的是将 j_security_check
机制也添加到该上下文中(出于用户体验原因,应该在 AJAX
而不是 <form>
中完成)。
请注意,我已经设法在两种情况下都有 cookie,但是当我进行 www.myapp.com/j_security_check
调用时,我总是会收到 408 Request Timeout
响应。
如何从我的应用程序的根上下文路径执行 j_security_check
调用? (请不要使用外部登录页面)
问题是您没有遵循基于 FORM 的身份验证规则:您需要首先请求受保护的资源,然后让容器向您询问用户名和密码。身份验证成功后,容器会将您重定向到最初请求的资源。 Java Servlet Specification Version 3.0 的第 13.6.3 节对此进行了介绍。如果您想处理路过式登录,您需要自己来做。 Servlet 3.0 在 HttpServletRequest
对象上有 login
方法,您只需将 AJAX 请求提交到您自己的 servlet 而不是 j_security_check
.
请注意,您 server.xml
中的 <Context>
配置将导致无休止的混乱,并且会在同一台服务器上部署您的 ROOT Web 应用程序两次。只需将 ROOT.war
放入 Tomcat 的 webapps/
目录并让它自动部署。