inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

인증 체크 부분 app..js 부분 질문이요

373

julie kim

작성한 질문수 1

0

안녕하세요 좋은 강의 잘 들었습니다:)
 
다름이 아니라 제가 강의를 들으며 실습을 병행해 공부를 하는 중인데요
강의가 열리고 react-router-dom이 업데이트되어서 인지 제 컴퓨터에서는 app.js에서 Switch를 사용하면 진행이 되지 않아 구글링 한 결과로 <Routes>를 사용하고 <Rounte component >대신 < element >를 사용해서 학습을 진행해왔었습니다.
 
그런데 마지막 인증 체크 부분 강의를 들으면서 문제가 생겼는데요
app.js에서 auth를 어떻게 적용해야 할 지 잘 모르겠습니다.
강사님의 코드를 따라하기엔 저는 component를 사용해서 적용이 안되는 것 같습니다.
 
구글링을 해봐도 해결할 수 없어 질문글을 남깁니다 감사합니다.

nodejs react

답변 2

4

Yoonsang's Record

안녕하세요! 

저도 마찬가지로 react-router-dom v6를 사용해서

꽤 문법이 많이 달라져서 많이 찾아보고 강의들었어요!

제 글 참고하시고 도움되시면 좋겠습니다.

hoc/auth.js

import React from "react";
import { useDispatch } from "react-redux";
import { authUser } from "../_actions/user_action";
import { useNavigate } from "react-router-dom";

export default function Auth({ SpecificComponent, option, adminRoute = null }) {
const dispatch = useDispatch();
const navigate = useNavigate();

dispatch(authUser()).then((response) => {
if (!response.payload.isAuth) {
// 로그인 하지 않은 상태
if (option) {
navigate("/login");
}
} else {
// 로그인 한 상태
if (adminRoute && !response.payload.isAdmin) {
navigate("/");
} else {
if (option === false) {
navigate("/");
}
}
}
});

return <SpecificComponent />;
}

App.js

import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import LandingPage from "./components/views/LandingPage/LandingPage";
import LoginPage from "./components/views/LoginPage/LoginPage";
import RegisterPage from "./components/views/RegisterPage/RegisterPage";
import Auth from "./hoc/auth";

function App() {
// Auth option
// null -> 누구나 접근 가능
// true -> 로그인 한 유저만 접근 가능
// false -> 로그인 한 유저는 접근 불가능
return (
<Router>
<Routes>
<Route
path="/"
element={<Auth SpecificComponent={LandingPage} option={null} />}
/>
<Route
path="/login"
element={<Auth SpecificComponent={LoginPage} option={false} />}
/>
<Route
path="/register"
element={<Auth SpecificComponent={RegisterPage} option={false} />}
/>
</Routes>
</Router>
);
}

export default App;

 

 

 

0

모영식

감사합니다. 개인적으로 궁금한게 이러한 패턴도 hoc인가요??

0

John Ahn

안녕하세요 !!! 

컴포넌트를 사용한다는게  함수형 컴포넌트를 사용한다는건가요 ?!

깃 이메일이랑 비번이 필요하다고 하네요

0

38

1

404 에러

0

105

1

34강 인증 체크에서 element 사용 때문에 에러나시는 분들 이렇게 하심 됩니다.

0

121

1

로그인, 로그아웃, 토근 작동 안 함

0

242

0

9강 오류 어떻게 해결하나요?

0

195

1

localhost 에서 연결을 거부했습니다.

0

1944

4

포스트맨에서 true가 안떠요

0

152

1

왜 안되나요

0

130

1

몽고db 연결 오류가 납니다 위에껀 입력한 코드, 아래껀 터미널이에요

0

244

1

로그아웃 401 에러(Unauthorized)

0

506

2

암호가 해싱되지 않고 입력값 그대로 db에 저장되는 문제

0

152

1

7강중에서

0

167

2

User.findByToken is not a function

0

214

1

루트 디렉토리

0

275

1

useState

0

564

1

프록시 잘 설정했는데도 404 오류 뜨는 분들

5

879

6

webpack 관련 에러 질문

0

221

1

리액트 관련 질문

0

275

1

14강 로그아웃 안됨

0

319

1

mongoDB 데이터 확인하는 법

0

413

1

postman 에러

0

295

1

선생님 리덕스를 사용하면 어떠한 부분이 좋은지 알 수 있을까요?

0

236

1

다음과 같은 에러들이 발생합니다.

0

277

1

14강 로그아웃 기능 구현시 postman에서 Cannot POST 오류가 뜹니다.

0

380

1