본문 바로가기

TIL(Today I Learned)

TIL-230705(로그인 기능 구현하기)

📝오늘 공부한 것

  • "회원가입, 로그인 기능이 추가된 나만의 항해 블로그 백엔드 서버 만들기"

 

📌요구사항

 

시도해 본 것들💦 & 💯해결

로그인 기능까지 구현하고 요구사항에 맞게 수정하는 중

  • 토큰을 검사하여, 유효한 토큰일 경우에만 게시글 작성 가능
  • 제목, 작성 내용을 저장하고
  • 저장된 게시글을 Client 로 반환하기(username은 로그인 된 사용자

부분에서 

로그인을 하면, JWT 이 생성되고, 그 생성된 토큰의 유효성을 확인하는 if문을 작성한 뒤 유효한 토큰일 경우에 게시글을 작성할 수 있도록하면 되겠다!라는 생각은 들었지만,,유효한 토큰일 경우에만 게시글 작성하는 부분에서 막혔다.

원래 게시글 작성코드에서는 username, password, title, contents를 모두 작성을 한 뒤 게시글을 작성할 수 있도록 구현을 하였다. 그런데 로그인 기능을 추가하여 LoginRequestDto에는 username, password만 받고, BlogRequestDto에는 title, contents만 받도록 수정하였다.

그래서 Blog entity의 username과 User entity의 username을 연결하면 되겠다는 생각에

DB를 연결하는 @joincolumn을 사용한 뒤 username을 기준으로 blog table 데이터를 불러오면 되겠다! 라고 생각했지만 

코드를 구현하던 중 점점 배우지 않은 부분이 나와서 실패...

 

두번째 생각으로는 LoginRequestDto의 username을 Blog.java의 파라미터로 사용하여 연결하려 했다. run을 하고 결과도 나왔지만, 생각해보니 LoginRequestDto에서 가져온 username과 blog.java의 username은 같은 것을 비교하는 것이었다...

 

그래서 나온 세번째!!

일단 유효한 토큰인지 검사하는 메서드를 따로 만들었다

다른 기능들을 구현할 때 또 필요하기 때문이다!

 

그러고 만든 메서드를 이용하여 게시글 작성 서비스부분도 완성

 

이에 맞게 controller도 수정하고 Blog.java에서는

loginUsername메서드의 return값인 loginname을 Blog의 파라미터로 넣어 값을 넣어줬다.

    public Blog(BlogRequestDto requestDto, String loginname) {
        this.title = requestDto.getTitle();
        this.username = loginname;
        this.contents = requestDto.getContents();
    }

 

다른 api들도 수정하여 요구사항에 맞게 다 변경하였다!!

fostman으로 확인했더니 에러도 나지않고 잘 돌아간다!

로그인, 회원가입 기능이 추가된 백엔드 서버 완성!!

https://github.com/s2cocos2/blog.git

 

GitHub - s2cocos2/blog

Contribute to s2cocos2/blog development by creating an account on GitHub.

github.com

 

개선할 점💪🏻

다음 강의 부분이 security였는데 강의를 듣고 security를 적용해봐야겠다.

 

느낀 점🤔

강의에서 나온 코드들과 구글링해서 나온 코드들을 이리저리 짜집기 해서 얼렁뚱땅 돌아가게 만드는 코드들 갔다..

뭔가 내손으로 직접 코드짜는 느낌이 안든다..그래서 잘 하고 있는건지 실력이 늘고 있는건지도 잘 모르겠다..

만약에 강의없이 빈 프로젝트 화면에다가 처음부터 코드를 작성해보라고 하면 막막할 것 같다.

매니저님께서 처음부터 모든 것을 작성하는 개발자는 없다고 다들 코드를 가져다가 쓴다고 원래그런 것이라고는 하셨지만, 뭔가 뚝딱뚝딱 코드를 촤라락 작성해보고 싶다ㅠㅠ

일단 지금은 먼저 코드의 흐름을 읽는 연습부터 해야겠다!!

'TIL(Today I Learned)' 카테고리의 다른 글

TIL-230707  (0) 2023.07.07
TIL-230706  (0) 2023.07.06
TIL-230704(회원가입 기능 구현하기)  (0) 2023.07.04
TIL-230703(윈도우/ EC2에 Spring, Database 연동하여 배포하기(1))  (0) 2023.07.03
TIL-230630  (0) 2023.06.30