2011-12-22 3 views
2

localhost : 7001/MyServlet과 같은 페이지가 있습니다. 아래처럼 http 연결 요청을하고 있습니다.프로그래밍 방식으로 j_security_check 사용

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

그러나 "MyServlet"은 j_security_check로 보호됩니다. 그래서 내가 나의 연결을 만들 때, 로그인 페이지로 방향을 바꾼다. 하나 HttpConnection에에,

주를 인증하고 내 URL에 액세스하는 방법을

: 나는 아파치 일반적인 HttpClient를를 사용하는 당신이 하나의 요청에 호출 서버에 로그인 할 수 있습니다 의심

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

답변

0

HTTP 기본 인증이 사용 가능한 경우가 아니면 HTTPClient의 API에 대한 자세한 내용은 아직 알지 못하지만 기본적으로 쿠키를 사용하여 세션을 추적해야합니다. 로그인을 /j_security_check으로 게시하십시오. 그런 다음 서블릿에 액세스하십시오. (ACEGI Security를 ​​사용하는 경우 /j_acegi_security_check에 대해서도 동일한 기본 프로세스가 작동합니다.) 에 바로 게시하면 400 "잘못된 요청"이 발생합니다. 그 인증자는 상태 전이에 대해 다소 까다롭기 때문에 프로그래밍 방식 클라이언트를 염두에두고 설계되지 않았습니다. 먼저 /loginEntry에 액세스해야합니다 (세션 쿠키 이외의 응답은 버릴 수 있음). 다음은 로그인 정보를 /j_security_check에 게시합니다. 다음 리디렉션 (실제로는 /loginEntry로 생각합니다)을 따르십시오. 그러면 실제로 새 로그인 정보가 저장됩니다. 마지막으로 원하는 서블릿에 게시하십시오! NetBeans #5c3cb7fb60fe은이 동작을 Tomcat의 컨테이너 인증을 사용하여 허드슨 서버에 로그인하는 것으로 보여줍니다.

관련 문제