【问题标题】:Programmatically using j_security_check以编程方式使用 j_security_check
【发布时间】:2012-01-25 21:34:29
【问题描述】:

我有类似 localhost:7001/MyServlet 的页面。我正在从下面发出 http 连接请求

String url = "http://localhost:7001/MyServlet"
PostMethod method = new PostMethod(url); 
HttpClient client = new HttpClient();

但是“MyServlet”受 j_security_check 保护。因此,当我建立连接时,会被重定向到登录页面。

如何在一个 HttpConnection 中获得身份验证并访问我的 url

注意:我用的是apache常用的httpclient

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.methods.PostMethod;

【问题讨论】:

    标签: java j-security-check


    【解决方案1】:

    我怀疑您是否可以登录在单个请求中调用服务器,除非启用了 HTTP BASIC 身份验证。虽然我还不知道 HTTPClient 的 API 的细节,但基本上你需要使用 cookie 来跟踪会话;将您的登录信息发布到/j_security_check;然后访问 servlet。 (如果使用 ACEGI Security,同样的基本流程也适用于 /j_acegi_security_check。)

    Tomcat 的一个令人讨厌的问题是,立即发布到 /j_security_check 会产生 400“错误请求”;它的身份验证器对状态转换相当挑剔,显然在设计时并未考虑到程序化客户端。你需要先访问/loginEntry(你可以扔掉除了会话cookie之外的响应); 然后将您的登录信息发布到/j_security_check然后按照生成的重定向(我认为返回/loginEntry),它将实际存储您的新登录信息; 终于发布到所需的 servlet! NetBeans #5c3cb7fb60fe 展示了使用 Tomcat 的容器身份验证登录到 Hudson 服务器的实际操作。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 2013-12-28
      • 2012-06-15
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多