tomcat - j_security_check 在 <上下文路径 =""> 时不起作用

标签 tomcat tomcat7 jaas openejb j-security-check

我使用 j_security_check作为 tomcat/tomEE 服务器上 JAAS 机制的一部分。

我目前有一个名为“admin”的上下文,它将登录过程作为一个单独的页面 (login.html),并且该登录页面的表单类似于:<form action="j_security_check" method="post">使用适当的输入发送 j_username 和 j_password 属性。

一切正常。

为澄清起见,我的应用程序可在例如“www.myapp.com/admin”

现在我被要求在域“www.myapp.com”的根目录中添加另一个 Web 应用程序,所以我将其添加到我的 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 的身份验证规则:您需要首先请求 protected 资源,然后让容器向您询问用户名和密码。身份验证成功后,容器会将您重定向到最初请求的资源。这在 Java Servlet Specification Version 3.0 的第 13.6.3 节中有所介绍。 .如果您想处理路过式登录,您需要自己来做。 Servlet 3.0 有 login HttpServletRequest 上的方法对象,您可以只将 AJAX 请求提交给您自己的 servlet 而不是 j_security_check .

请注意 <Context>配置在你的 server.xml将会造成无尽的困惑,并且会在同一台服务器上两次部署您的 ROOT Web 应用程序。就放ROOT.war进入 Tomcat 的 webapps/目录并让它自动部署。

关于tomcat - j_security_check 在 <上下文路径 =""> 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751642/

相关文章:

Vaadin 身份验证和授权

java - 设置客户端 SASL 身份验证以连接两个不同的 kafka 集群

java - 服务器启动时监听器类未执行 || Tomcat || eclipse

java - 泽西网络服务。出现 404 错误

java - Tomcat 7 集群

hibernate - Spring MVC代码-部署时抛出HSEARCH000103异常

javascript - Tomcat7 压缩 JS/CSS

java - Catalina.sh 在设置内存大小时出错

tomcat - Netbeans 7 + Tomcat 7 启动检测

java - 在不重启 JVM 的情况下在 JAVA 中重新加载 Kerberos 配置