728x90
**본 포스팅은 유튜브&인프런 John Ahn님의 노드 리액트 기초 강의를 참고하여 작성하였습니다.**
Authentication Check
HOC (Higher Order Component)
다른 component를 받아서 새로운 component를 return하는 function 이다.
2022.02.05 - [Study/Node&React_basic] - [노드/리액트 기초] #18~20. CRA 구조, Boilerplate, React Router Dom
backend에 request를 날려서 그 사람의 현재 상태를 가져온다.
해당 유저가 해당 페이지에 들어갈 자격이 되는지 체크한 후 component로 보내준다.
// auth.js
export default function (SpecificComponent, option, adminRoute = null){
/*
option
null : 아무나 출입이 가능한 페이지
true : 로그인한 유저만 출입이 가능한 페이지
false: 로그인한 유저는 출입 불가능한 페이지
*/
function AuthenticationCheck(props){
const dispatch = useDispatch();
const navigate = useNavigate();
useEffect(() => {
dispatch(auth()).then(response => {
console.log(response)
//로그인 하지 않은 상태
if(!response.payload.isAuth){
if(option){
navigate("/login");
}
}else{
//로그인 한 상태
if(adminRoute && !response.payload.isAdmin){
navigate('/');
}else{
if(option === false)
navigate('/');
}
}
})
}, [])
return(
<SpecificComponent />
)
}
return AuthenticationCheck
}
728x90
'Study > Node&React_basic' 카테고리의 다른 글
[노드/리액트 기초] #29~32. 로그인 페이지, 회원가입 페이지, 로그아웃 (0) | 2022.02.08 |
---|---|
[노드/리액트 기초] #28. React vs React Hooks (0) | 2022.02.07 |
[노드/리액트 기초] #26~27. Redux, Props vs State (0) | 2022.02.07 |
[노드/리액트 기초] #23~25. Proxy Server, Concurrently, CSS Framework (0) | 2022.02.06 |
[노드/리액트 기초] #21~22. 데이터 Flow & Axios, CORS 이슈 & Proxy 설정 (0) | 2022.02.06 |
댓글