본문 바로가기

전체 글141

[Spring Security] mock 테스트시 401 에러 이전에 이미 403에러가 뜨는 경우를 만난적이 있어서 이전 블로그에 관련 내용을 쓴적이 있다 https://velog.io/@haebing0309/WebMvcTest%EC%97%90%EC%84%9C-Spring-Security-%EC%A0%81%EC%9A%A9-403%EC%97%90%EB%9F%AC-csrf @WebMvcTest에서 Spring Security 적용, 403에러 -csrf 스프링 시큐리티 적용한 Rest API Controller 테스트하다가 계속 403 에러가 나왔다. chatgpt에도 물어보고 에러를 검색해봐도 안나와서 스프링시큐리티 403에러 치니까 나오더라...일단 나의 코드를 설 velog.io 위 에러는 csrf()를 안해줘서 나는 에러였다 그래서 처음에 403에러가 나왔길래 .. 2023. 11. 4.
[Redis] Redis 와 Cache, Memcached 현대 웹서비스에서는 캐시의 역할이 중요하다. 서비스의 규모가 커져감에 따라 모든 요청을 DB직접 참조 또는 API호출로 처리한다면 성능과 에러 등과 같은 이슈가 발생할 수 밖에 없다. Cache Cache란 캐시란 나중에 요청한 결과를 미리 저장해둔 후 빠르게 서비스를 해주는 것을 의미 즉 미리 결과를 저장하고 나중에 요청이 오면 DB또는 API가 아닌 캐시로 접근하여 요청을 처리 캐시가 동작할 수 있는 철학에는 파레토 법칙이 있다 파레토 법칙 → 80퍼센트의 결과는 20퍼센트의 원인으로 인해 발생한다 즉 캐시가 효율적일 수 있는 이유는 모든 것을 캐시하는 것이 아니라 많이 사용되는 20%를 캐싱한다면 전체적으로 영햐을 주어 효율을 극해화할 수 있다 캐시 사용구조 기본적으로 캐시는 클라이언트 요청 → 캐.. 2023. 11. 4.
[Spring Security] PasswordEncoder PasswordEncoder 계약의 이해 인증 공급자에서 AuthenticationProvider는 인증 논리를 구현한다 사용자의 암호를 검증하기 위해 PasswordEncoder가 필요하다 사용자 세부정보 서비스를 통해 사용자를 찾은후 AuthenticationProvider는 PasswordEncoder를 이용해 검증한다 PasswordEncoder 스프링 시큐리티에서 사용자 암호를 검증하는 방법을 알려줌 암호가 유효한지 확인, 암호의 해시제공하거나 암호화 수행 public interface PasswordEncoder{ String encode(CharSequence rawPassword); boolean matches(CharSequence rawPassword, String encodedPass.. 2023. 11. 2.
[JPA] API 개발시 주의사항 및 성능 최적화 API개발시 주의사항 요청값으로 엔티티를 직접 받지 말자 문제점 - 엔티티에 프레젠테이션 계층을 위한 로직이 추가된다 - 실무에서 회원 엔티티를 위한 다양한 API가 만들어지는데 각각의 API를 위한 모든 요청 요구사항을 담기 어렵다 - 엔티티가 변경되면 API스펙이 변한다 따라서 별도의 DTO로 파라미터를 받는다 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v2/members") public CreateMemberResponse saveMemeberV2(@RequestBody @Valid CreateMe.. 2023. 11. 2.
[Spring Security] UserDetailService, UserDetails UserDetailsService : 사용자이름으로 사용자를 검색 UserDetailsManager : 대부분의 애플리케이션에 필요한 사용자 추가, 수정, 삭제 작업 UserDetailService는 UserDetails 계약을 이용해 사용자를 기술 UserDetails는 GrantedAuthority 인터페이스를 이용해 권한을 하나이상 가지게 함 > UserDetails UserDetails 계약은 스프링 시큐리티가 이해하는 방식으로 사용자를 나타낸 것이다 public interface UserDetails extends Serializable{ //사용자 자격증명 반환 메서드 String getUserName(); String getPassword(); //앱 사용자가 수행할 수 있는 작업을 인스턴스.. 2023. 11. 1.
ajax 기본 (3) -댓글쓰기 전체목록 상품명 상품가격 상품설명 ${product.description} 상품사진 댓글 등록 1. 버튼에 click이벤트 걸고 form에 serialize 걸기 let product_code='${product.product_code}'; $("#commentInsertBtn").click(function(){ //alert($); let insertData=$("#commentInsertForm").serialize(); //alert(insertData); commentInsert(insertData); }); 2.commentInsert로 controller와 연결(DB연결단생략) function commentInsert(insertData){ $.ajax({ url:'/comment/insert.. 2023. 5. 23.
728x90