[React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 기존 React + Spring Boot 소셜 로그인 코드 삭제하기

2024. 1. 13. 00:55·웹 프로젝트/👨‍👨‍👧‍👧소셜 가계부

기존에 리액트와 스프링부트 지식이 없는 상태에서 인터넷에서 찾은 지식만으로 프로젝트를 만들었더니, 스프링 프로젝트를 켜지 않으면 리액트 프로젝트도 수정할 수 없는 매우 귀찮은 상태가 돼 버렸다.

어차피 앞으로 진행할 프로젝트의 백엔드 부분은 node.js와 express를 사용하게 될 테니 스프링부트 코드는 이제 쓸모가 없는 상황이다. 따라서 프로젝트를 다시 시작하기 전에 가장 먼저 해야 할 것이 리액트와 스프링부트 연동을 해제하는 일이었다.

 

 

인텔리제이 Run 활성화

스프링부트 실행 시 run 활성화가 되어 있지 않아서 구글링을 통해 해결방법을 찾아보았다. 아래 블로그를 보고 해결했다.

 

[JAVA] intellij Run 비활성화 시 해결 방법

intellij Run 비활성화 시 해결 방법 intellij를 사용하다보면 테스트 케이스만 Run이 활성화 되어 메인 클래스에서 사용하지 못하는 경우가 있는 것 같습니다. 아래 내용을 순서대로 따라하여 메인 클

nirsa.tistory.com

(혹시나 다시 스프링부트를 다루게 될지도 모르니 미리 저장해둔다.)

 

 

소셜 로그인 관련 코드 삭제

이제 해야하는 일은 로그인 관련 로직을 전부 삭제하는 일이다.

이전에 미리 소셜 로그인 구현 과정을 포스팅해 놓았고, 덕분에 소셜 로그인 구현 코드를 추적하기가 용이했다.

 

[React/Spring Boot/MySQL] 리액트+스프링부트 OAuth2 Google, Facebook, Github 소셜로그인 구현 일지 (스프링 구

완성화면 현재 회원가입 되어 있는 구글 아이디로 로그인하는 과정. DB에 사용자 정보가 저장되어 있지 않을 시 회원가입을 자동으로 진행한다. 오른쪽 상단은 mysql workbench, 오른쪽 하단은 인텔

florescene.tistory.com

해당 포스팅을 확인하며 로그인과 관련된 코드는 모두 삭제했다.

진입을 못 하게 막아놨던 부분이 router.jsx 부분이었는데 막혀있던 부분을 전부 해제했다.

 

router.jsx

import React, { useEffect, useState } from "react";
...
import LoadingIndicator from "../components/common/LoadingIndicator";
import OAuth2RedirectHandler from "../components/user/oauth2/OAuth2RedirectHandler";
import { getCurrentUser } from "../components/util/APIUtils";
import { ACCESS_TOKEN } from "../components/constants";

function AppRouter() {
  const [loginInfo, setloginInfo] = useState({
    authenticated: false,	//로그인 여부
    currentUser: null,	//로그인 유저
    loading: true,	//로딩o
  });

  useEffect(() => {	//useEffect: 컴포넌트 렌더링 시 특정작업을 실행
    getCurrentUser()
      .then((response) => {
        setloginInfo({
          currentUser: response,
          authenticated: true,	//로그인o
          loading: false,	//로딩x
        });
      })
      .catch((error) => {
        setloginInfo({
          loading: false,
        });
      });
  }, []);

  //로그아웃 함수
  const handleLogout = () => {
    localStorage.removeItem(ACCESS_TOKEN);	//ACCESS_TOKEN을 제거한다.
    setloginInfo({
      authenticated: false,	//로그인x
      currentUser: null,	//로그인 유저를 null로 setting
    });
    if (alert("로그아웃되었습니다.")) {
    }
    document.location.href = "/";	//초기화면으로 이동
  };

  if (loginInfo.loading) {	//loading이 true이면 로딩화면을 보여준다.
    return <LoadingIndicator />;
  }
  return (
    <div>
      <Router>
      	{/*로그인이 되어 있으면 사이드바에 사용자 정보를 set하고, logout 버튼을 활성화시킨다.
        로그인 되어 있지 않을 시 아무런 액션도 실행하지 않는다.*/}
        {loginInfo.authenticated ? <Sidebar userInfo={loginInfo} logoutAction={handleLogout} /> : <></>}
        <Routes>
          <Route exact path="/" element={<LoginPage userInfo={loginInfo} />} />
          <Route path="/main" element={<Dashboard userInfo={loginInfo} />} />
          ...
          <Route path="/oauth2/redirect" element={<OAuth2RedirectHandler />}></Route>
          <Route path="/signup" element={<SignUpPage userInfo={loginInfo} />} />
          <Route path="/login" element={<LoginPage userInfo={loginInfo} />} />
        </Routes>
      </Router>
    </div>
  );
}

export default AppRouter;
import React, { useEffect, useState } from "react";
...

function AppRouter() {
  const [loginInfo, setloginInfo] = useState({
    authenticated: false,
    currentUser: "임시",
    loading: false,
  });

  if (loginInfo.loading) {
    return <LoadingIndicator />;
  }

  return (
    <div>
      <Router>
        <Sidebar userInfo={loginInfo} />
        <Routes>
          <Route path="/" element={<Dashboard userInfo={loginInfo} />} />
          <Route exact path="/login" element={<LoginPage userInfo={loginInfo} />} />
          <Route path="/inex" element={<AccountBookPage />} />
          <Route path="/calendar" element={<CalendarPage />} />
          <Route path="/friendlist" element={<FriendListPage />} />
          <Route path="/challenge" element={<ChallengePage userInfo={loginInfo.currentUser} />} />
          <Route path="/community" element={<CommunityPage userInfo={loginInfo.currentUser} />} />
          <Route path="/setting" element={<SettingPage userInfo={loginInfo.currentUser} />} />
          <Route path="/oauth2/redirect" element={<OAuth2RedirectHandler />}></Route>
          <Route path="/signup" element={<SignUpPage userInfo={loginInfo} />} />
          <Route path="/login" element={<LoginPage userInfo={loginInfo} />} />
        </Routes>
      </Router>
    </div>
  );
}

export default AppRouter;

 

 

이후에 로그인/회원가입 페이지의 인증 로직도 제거한 후에, 시작 화면을 대시보드로 변경했다.

이렇게만 진행해도 백엔드 없이 잘 돌아간다.

이제 지저분하게 작성해 놓았던 코드들을 정리하고 필요없는 페이지를 삭제하여 프론트엔드 초안을 완성할 예정이다. 

저작자표시 비영리 변경금지 (새창열림)

'웹 프로젝트 > 👨‍👨‍👧‍👧소셜 가계부' 카테고리의 다른 글

[React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 백엔드 구현하기 (입출금 내역 - GET 요청 보내기)  (0) 2024.01.26
[React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 백엔드 구현하기 (사전 작업 - express, nodemon, body-parser 설치 및 테스트 작성)  (1) 2024.01.25
[React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 프론트엔드 초안 작성하기(라우터 설정, 가계부 월별 이동하기 구현)  (1) 2024.01.16
[React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 프로젝트 전체 기획 정리  (1) 2024.01.13
[React / Socket.io] 채팅 구현하기  (0) 2023.09.13
[React/Spring Boot/MySQL] 리액트+스프링부트 OAuth2 Google, Facebook, Github 소셜로그인 구현 일지 (스프링 구현x, 리액트 구현o)  (0) 2023.05.26
'웹 프로젝트/👨‍👨‍👧‍👧소셜 가계부' 카테고리의 다른 글
  • [React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 백엔드 구현하기 (사전 작업 - express, nodemon, body-parser 설치 및 테스트 작성)
  • [React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 프론트엔드 초안 작성하기(라우터 설정, 가계부 월별 이동하기 구현)
  • [React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 프로젝트 전체 기획 정리
  • [React / Socket.io] 채팅 구현하기
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    포트폴리오
    spring boot
    강의내용정리
    mysql
    프로젝트
    블로그 제작
    Jiraynor Programming
    리액트
    SWEA
    클론 프로젝트
    플러터
    공식문서
    타입스크립트
    bfs
    구현
    파이썬
    Next.js
    Til
    웹사이트
    React
    프로그래머스
    알고리즘
    백준
    자바
    자바스크립트
    뉴렉처
    ZeroCho
    AWS
    컴퓨터네트워크
    d3
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[React/Node.js/Express/MongoDB] 소셜 가계부 프로젝트 구현 일지: 기존 React + Spring Boot 소셜 로그인 코드 삭제하기
상단으로

티스토리툴바