PeachStore - 회원가입및 로그인

JIWOO YUN·2024년 6월 23일
0

peach_store

목록 보기
4/4
post-custom-banner

회원가입 api 구현하기

기본 v1 버전 api의 경우

/v1/join

  • post 로 받아서 해당 데이터 등록진행.

/v1/join

"id" : "testID"

"password" : "testpw"

"phone" : "01012345678"

"sido" : "seoul"

"roadAddress" : "서울 성북구 무슨무슨가 887"

"zonecode" : "45678"

우편번호 서비스를 사용하기 쉽게 주소 잘 넣기.

  • 나중에 프론트엔드쪽에 도입해볼 예정

Daum Postcode Service User Guide

회원 객체

  • 이름
  • 비밀번호
  • 전화번호
  • 주소

주소의 경우 하나의 객체로 묶어서 저장하기

@Embeddable 과 @Embedded 사용

  • 하이버네이트에서 제공하는 임베디드 타입으로 된 주소 객체를 관리.

postMan으로 회원가입이 되는 지확인.

  • 데이터를 받을때 requestBody에 받아서 json 으로 들어오게 진행

회원가입 테스트 완료

  • 중복 회원가입 테스트 완료
    • 같은 회원가입 진행시 중복회원으로 오류 발생

회원가입까지 완료

  • 다음 확인해야할것들

로그인 쪽 만들기.

로그인

로그인까지 만들고 마이페이지 이동하면 마이페이지 데이터 보여주기.

  • 이름
  • 전화번호
  • 주소
  • 나중에 주문 정보 보여줄 예정
    • 추후 주문 객체를 추가하면서 추가 예정

로그인의 경우 springsecurity를 사용중이기 때문에 로그인 부분은 security에서 진행.

  • FE에서 데이터를 받아올려고 하니까 기본 springSecurity는 Form 을 기준으로 데이터를 전달 받다보니 Json 형식으로 받기 위해서는 filter 및 전체적으로 전부 바꿔줘야한다.
  • userDetailService를 커스터마이징해서 member에 있는 데이터를 가지고 login 구현 진행.

Json을 통해 로그인을 진행할거기 때문에 fomlogin은 disabled 진행

  • 기본 방식은 formlogin은 사용하지 않겠다고 설정을 추가.
로그인 방식 json으로 변경하기
  • rest api 형식으로 진행하려다보니까 기본적인 form 로그인 방식이 아닌 json 형식으로 받아서 진행하려고 한다.

  • 그렇기 때문에 json으로 받기 위해서는 커스텀 인증 필터를 통해서 http 요청의 json 본문에서 자격 증명이 필요하다.

public class CustomAuthenticationFilter extends AbstractAuthenticationProcessingFilter {

    private final ObjectMapper objectMapper = new ObjectMapper();

    public CustomAuthenticationFilter(String defaultFilterProcessesUrl){
        super(defaultFilterProcessesUrl);
    }
    @Override
    public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException {

        Map<String,String> authRequest = objectMapper.readValue(request.getInputStream(),Map.class);

        String username = authRequest.get("username");
        String password = authRequest.get("password");

        UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(username,password);

        return getAuthenticationManager().authenticate(authToken);
    }

}
  • json으로 요청온 본문에서 username과 password를 읽어서 가져오기.

로그인 및 회원가입까지 진행되었으니 이제 메인인 상품 게시판 부분부터 상품과 주문관련해서 진행해야한다.

트러블 슈팅

  • order 명령어를 생각하지 않고 만들려고 했던 것

    • 테이블이름을 orders 로 바꿔주던가 객체 자체를 orders 로 바꾸기.
  • 로그인 시에 json 인증방식을 활용하는 방식을 처음 하다보니 filterchain을 잘못걸어서 설정을 아예 초기화시키고 다시하는 방식을 사용했다.

    • 로그인은 제대로 되는데 회원가입에서 access_denied 가 모든 경로를 다 열어놨을 때도 발생하여 아예 security를 초기화 시키고 다시 진행.
  • springsecurity 부분은 기본적으로 form에서 지원됨
    • 그렇기 떄문에 json 인증방식을 사용하려면 필터 및 대부분을 해당 사항에 맞춰서 바꿔줘야함.
profile
열심히하자
post-custom-banner

0개의 댓글