[SPRING] 각도 4.3 HTTPClient 기본 인증 작동하지 않음
SPRING각도 4.3 HTTPClient 기본 인증 작동하지 않음
새로 출시 된 HttpClient를 사용하여 Angular 4에서 기본 인증을 구현하려고합니다.
노출 된 REST API를 사용하여 Tomcat에서 실행되는 Spring 애플리케이션에 연결하려고합니다.
내 LoginComponent에 다음 코드가 있습니다.
onSubmit(user){
console.log(user);
const body = JSON.stringify({username: user.userName, password: user.password});
let headers = new HttpHeaders();
headers.append("Authorization", "Basic " + btoa("username:password"));
headers.append("Content-Type", "application/x-www-form-urlencoded");
this.http.post('my url here',body, {headers: headers}).subscribe(response => {
console.log(response);
}, err => {
console.log("User authentication failed!");
});
}
그러나 요청은 Authorization 헤더를 전혀 추가하지 않습니다.
다음은 Chrome 도구의 네트워크 탭에서 가져온 것입니다.
내가 뭘 잘못하고 있죠 ? 이 작품을 어떻게 만들 수 있습니까?
업데이트 1 : 여전히 작동하지 않습니다.
나는 아래 두 줄을 바꿨다.
headers = headers.append("Authorization", "Basic " + btoa("username:password"));
headers = headers.append("Content-Type", "application/x-www-form-urlencoded");
요청 헤더를 예상대로 가져옵니다. Chrome에서 가져온 것입니다.
그러나 후불 통화는 여전히 실패하고 있습니다.
서버 측에서는 다음과 같습니다.
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String authCredentials = request.getHeader("Authorization");
if(authCredentials == null) {
logger.info("Request with no basic auth credentials {}", request.getRequestURL());
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return;
}
// do my stuff
}
전화는 결코 내 물건을 다룰 수 없다. authCredentials가 null입니다.
이것은 크롬에서 온 것입니다.
진행 방법?
해결법
-
==============================
1.HttpHeaders는 변경되지 않으므로 각 호출의 headers 객체를 재정의하기 위해 함수의 결과를 할당해야합니다.
HttpHeaders는 변경되지 않으므로 각 호출의 headers 객체를 재정의하기 위해 함수의 결과를 할당해야합니다.
let headers = new HttpHeaders(); headers = headers.append("Authorization", "Basic " + btoa("username:password")); headers = headers.append("Content-Type", "application/x-www-form-urlencoded");
출처 : 각도 문서
-
==============================
2.안녕하세요 귀하의 백엔드 구성 할 수 있습니다.
안녕하세요 귀하의 백엔드 구성 할 수 있습니다.
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class RestConfig { @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("OPTIONS"); config.addAllowedMethod("GET"); config.addAllowedMethod("POST"); config.addAllowedMethod("PUT"); config.addAllowedMethod("DELETE"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }
귀하의 각도 요청은 그렇게되어야합니다.
import { Http , Headers, Response } from '@angular/http'; let headers = new Headers(); headers.append("Authorization", "Basic " + btoa("username:password")); headers.append("Content-Type", "application/x-www-form-urlencoded");
github repo 샘플 데모를 확인할 수도 있습니다 각도 2/4의 봄 mvc
-
==============================
3.RequestOptions를 사용하여 게시물 요청에 헤더를 설정하십시오.
RequestOptions를 사용하여 게시물 요청에 헤더를 설정하십시오.
import { Http,Headers,RequestOptions } from '@angular/http'; .. .. let headers = new Headers(); headers.append("Authorization", "Basic " + btoa("username:password")); headers.append("Content-Type", "application/x-www-form-urlencoded"); let options = new RequestOptions({ headers: headers }); this.http.post('my url here',body, options).subscribe(response => { console.log(response); }, err => { console.log("User authentication failed!"); });
from https://stackoverflow.com/questions/45894628/angular-4-3-httpclient-basic-authorization-not-working by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] restTemplate을 사용하여 Multipart 폼 데이터를 보내는 방법 Spring-mvc (0) | 2019.03.18 |
---|---|
[SPRING] RestTemplate 대 Apache Http 클라이언트 (봄 프로젝트의 프로덕션 코드 용) (0) | 2019.03.18 |
[SPRING] Spring MVC 컨트롤러에서 쿼리 문자열 값 가져 오기 (0) | 2019.03.18 |
[SPRING] 드라이버 클래스를로드 할 수 없습니다 : com.mysql.jdbc.Driver Spring (0) | 2019.03.18 |
[SPRING] Java 코드는 속성이 상수 표현식 오류 여야하므로 컴파일되지 않습니다. (0) | 2019.03.18 |