본문 바로가기
Study in Bootcamp/Pre-Project

[Pre-Project] Day 12 + 주말 : CORS 해결 및 유저 정보 판별

by Bhinney 2022. 11. 7.

프로젝트를 하는 과정에 있어서 기록하는 것이다.

잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다.


✅ CORS 해결

  • 금요일부터 주말 내내 CORS 오류를 해결하려 했으나 해결하지 못했다.
  • 거기에 플러스로 회원가입도 되지 않았다.
  • @CrossOrigin 어노테이션도 붙여보고, 어트리뷰트도 다 넣어줘보았다.
@CrossOrigin(origins = "*", allowedHeaders = "*", allowCredentials = "true", maxAge = 5000L)
  • WebMvcConfig를 만들어 addMapping도 했으나 이 오류는 해결되지 않았다.
  • 그리고 황당하게 찾은 이유.. OPTIONAL 메서드가 허용되어 있지 않았다.
  • 해당을 추가해주고, 어노테이션을 주석처리하니 해결이 되었다.
@Bean
CorsConfigurationSource corsConfigurationSource() {
	CorsConfiguration configuration = new CorsConfiguration();
	configuration.setAllowedOrigins(Arrays.asList("*"));
	configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PATCH", "DELETE"));
	UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
	source.registerCorsConfiguration("/**", configuration);

	return source;
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
	CorsConfiguration configuration = new CorsConfiguration();
	configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PATCH", "DELETE", "OPTIONS"));
	UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
	source.registerCorsConfiguration("/**", configuration);
	configuration.addAllowedHeader("*");
	configuration.addAllowedOriginPattern("*");
	configuration.setAllowCredentials(true);
	configuration.setMaxAge(5000L);

	return source;
}

✅ 유저 정보 판별(?)

  • 이제 config에 주석처리를 해두었던 권한 접근을 해제하였다.
  • 그러면 생기는 문제가 로그인한 유저가 해당 페이지 유저가 아님에도 해당 페이지에 접근이 가능한 경우가 생긴다
    • 예를 들면, 로그인한 A는 유저 권한을 갖고 있다.
    •  A는 B의 페이지에 실수로 접근하였다.
    • 하지만 유저권한이 있기에 접근이 된다.
  • 현재는 위의 상태이다. 그리하여, 로그인 유저와 해당 페이지 유저가 일치하는지에 대한 판별이 필요했다.
  • 프론트엔드 분들께서 이미 한 번 권한이 없으면 안된다고 하셨지만, 혹시나 하는 마음으로 한 번 더 걸러 주어야 겠다고 생각했다.
  • UserDetails을 상속받은 UsersDetail을 가져왔더니 찾을 수가 없었다.
  • 그래서 Principal로 해결하였다.
  • 왜 안 된 건지 알고 싶다.

댓글