以编程方式使用j_security_check

时间:2011-12-22 07:17:42

标签: java j-security-check

我有像localhost:7001 / MyServlet这样的页面。我正在制作一个来自下面的

的http连接请求
String url = "http://localhost:7001/MyServlet"
PostMethod method = new PostMethod(url); 
HttpClient client = new HttpClient();

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

如何在一个HttpConnection

中进行身份验证并访问我的网址

注意:我使用apache常见的httpclient

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

1 个答案:

答案 0 :(得分:0)

我怀疑您可以在单个请求中登录调用服务器,除非启用了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服务器的操作。