login(@RequestBody Map body){ String pw = body.get("password"); String encoded = pe.encode(pw); // 받은 비밀번호를 인코딩 System.out.println(encoded); boolean a = pe.matches(pw, encoded); // 입력한 pw와 인코딩된 비밀번호 비교(true, false) System.out.println(a); return Map.of(body.get("email"), body.get("password")); } }"> login(@RequestBody Map body){ String pw = body.get("password"); String encoded = pe.encode(pw); // 받은 비밀번호를 인코딩 System.out.println(encoded); boolean a = pe.matches(pw, encoded); // 입력한 pw와 인코딩된 비밀번호 비교(true, false) System.out.println(a); return Map.of(body.get("email"), body.get("password")); } }"> login(@RequestBody Map body){ String pw = body.get("password"); String encoded = pe.encode(pw); // 받은 비밀번호를 인코딩 System.out.println(encoded); boolean a = pe.matches(pw, encoded); // 입력한 pw와 인코딩된 비밀번호 비교(true, false) System.out.println(a); return Map.of(body.get("email"), body.get("password")); } }">
import java.util.Map;

import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor // <- 필수 (Bean을 가져오는 생성자를 자동으로 만들어준다)
@RequestMapping("/api")
public class AuthController {
	
	private final PasswordEncoder pe; // Bean으로 등록한 메서드를 가져옴

	
	@PostMapping("/login")
	public Map<String, String> login(@RequestBody Map<String, String> body){
		String pw = body.get("password");
		String encoded = pe.encode(pw); // 받은 비밀번호를 인코딩
		System.out.println(encoded);
		boolean a = pe.matches(pw, encoded); // 입력한 pw와 인코딩된 비밀번호 비교(true, false)
		System.out.println(a);
		return Map.of(body.get("email"), body.get("password"));
	}

}

SecurityConfig.class

	// 비밀번호를 평문으로 비교하면 위험하니 해시로 비교
	// BCryptPasswordEncoder가 가장 흔한 표준
	@Bean
	public PasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder(6); // <- 숫자는 인코딩 강도 (기본값 10, 높을수록 보안은 좋지만 느림)
	}