2013-08-08 3 views
3

인증 웹 서비스를 제공하는 간단한 컨트롤러가 있습니다. POST 매개 변수로 사용자 이름과 암호를 받아들이고 JSON 결과를 반환합니다. 암호가 제출되기 때문에 누구나 쿼리 문자열을 제출하도록 권장하지 않습니다. 나는 그것이 요청 기관에서만 받아 들여 지도록 강요하기를 원한다. 이렇게하면 게시 된 값의 SSL 암호화가 보장됩니다. Sping MVC에서 어떻게 구현합니까?Spring MVC : 요청 본문에 POST 매개 변수를 요구하고 쿼리 문자열 매개 변수를 무시하는 방법?

@RequestMapping(value = "/authenticate", method = RequestMethod.POST) 
    public ResponseEntity<String> handleAuthenticateGet(
      @RequestParam(value = PRAConstants.USERNAME) String username, 
      @RequestParam(value = PRAConstants.PASSWORD) String password) 
    { 
     boolean authSuccess = LDAPUtil.authenticateUser(username, password); 
     HttpHeaders responseHeaders = new HttpHeaders(); 
     responseHeaders.setContentType(MediaType.APPLICATION_JSON); 
     return new ResponseEntity<String>("{\"result\":" + authSuccess + "}", responseHeaders, HttpStatus.OK); 
    } 
} 
+0

봐 –

+1

@LeeMeador : 저에게 효과적입니다. 나는 그것을 해결책으로 게시했다. request.getQueryString()을 검사했다. 감사! – Jaffadog

+0

@ Jaffadog, StringUtils를 사용하는 대신 관용적 인 방법으로 찾았습니까? – Garbage

답변

0

당 리 Meador,이 추가 한 :

나를 위해 작동
boolean authSuccess = false; 
// if password is passed on the query string, then always return false. otherwise, go ahead and check with ldap 
if (!StringUtils.contains(request.getQueryString(), PRAConstants.PASSWORD)) 
{ 
    authSuccess = LDAPUtil.authenticateUser(username, password); 
} 

... 매개 변수를 실제 전체 URL을 찾을 수없고 확인하기 위해 HTTP 요청에서

관련 문제