inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

11-03 회원 조회 API - 인가

access token 관련 질문드립니다.

해결된 질문

519

작성자 없음

작성한 질문수 0

0

 안녕하세요 강의를 다 듣고 개인 포트폴리오 제작중에 있습니다.

현재 로그인 부분을 구현중인데, 포인트 충전이라던가 마이페이지 접근시, 비밀번호 변경 시 등의 경우에 인가(여기선 fetchUser)를 받아야 한다고 이해했습니다.

 

그러려면, 강의에선 아래 사진처럼 header에 토큰을 넣어서 보내었습니다.

하지만 직접 프론트엔드를 구축해서 api 호출하려고 하니 header에 토큰을 넣어줘야 하는데, 현재 로그인시 그냥 토큰 값인 문자열을 리턴할 뿐 엑세스토큰을 저장하는 곳이 없습니다.

  1. 보통 액세스토큰을 저장할 때 변수, 로컬스토리지, 세션스토리지, 쿠키 중 무엇을 가장 많이 사용하나요?

  2. 섹션 13-11의 강의에서 처럼 변수에 액세스토큰을 저장하는 경우를 생각해 봤습니다. 그러면 인증하는 컴포넌트(ex: login)와 인가를 받는 컴포넌트(ex: 포인트 충전)가 다를 때 컴포넌트에서 token을 변수로 저장하더라도 다른 컴포넌트에서는 사용 못할텐데 recoil같은 라이브러리를 사용해서 전역변수로 사용해야 하는지 궁금합니다.

     

    아래는 프론트엔드의 login 컴포넌트를 예시를 적어보았습니다.

     

     

     

    const [token, setToken] = useState("");
    
    await axios.post("http://localhost:5656/graphql", {
                query: `
                    mutation {
                        login(id: "${inputId}", password: "${inputPw}")
                    }
                `,
            })
            .then(res => {
                setToken(res.data.data.login);
                }
            })

     

     

 감사합니다.

javascript node.js docker rest-api nestjs

답변 1

0

노원두

안녕하세요! rjs2517님!

우선! 강의를 완강하신 것을 축하드립니다!^^
끝 매듭을 짓는 모습이 정말 멋져요!

질문에 대한 답변을 드리기에 앞서, 한가지 기준을 먼저 설명드리면!
사실상 모든 검증은 백엔드에서 이루어집니다!(인가를 포함한 게시글, 댓글 등 모든 검증)
프론트엔드는 유저가 조작이 가능하므로 프론트엔드의 검증은 사실상 백엔드로의 네트워크 비용을 줄이기 위함 정도로 인지해 주시면 좋을 것 같아요!

따라서, 특정 api를 요청하면 백엔드에서 검사하여 응답을 줄지말지가 결정됩니다!
(로그인은 header에 들어온 토큰을 가지고 결정하겠죠?!)

 

이어서, 1번부터 답변을 드리자면!

  1. 엑세스토큰을 저장할 때, 로컬스토리지, 세션스토리지에 저장하는 경우도 많이 있지만, 프론트 수업에서 배우셨던 것처럼 XSS공격 취약점에 의해서 로컬스토리지는 탈취 위험이 있었어요! 따라서, 보안수준을 높이기 위해서 변수에 저장해 주시면 좋겠죠!

  2. 네! 맞아요! 수업때 했던 방식 그대로, recoil로 엑세스토큰을 관리하게 됩니다! 꼭 recoil이 아니더라도, 전역변수를 관리할 수 있는 글로벌스테이트면 상관 없겠죠?!^^

그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?

0

83

2

강의 전체 소스 코드를 받고싶습니다.

0

76

2

fontawesome 사용 문의

0

77

2

소스 코드 부탁드립니다~

0

85

2

깃 레포지터리 소스

0

82

2

커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요

0

73

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

85

3

강의 버전관련 문의입니다

0

102

2

Ubuntu 설치 관련

0

61

1

schema.gql 질문 드립니다.

0

51

1

서버 재실행시 Many to Many

0

101

3

input 관련 문의

0

90

2

Rest API 보다는 graphql이 주된 내용인데

0

130

2

강의 전체 소스코드 받을수있을까요?

0

155

1

도커볼륨 마운트 관련

0

127

2

findOne 타입스크립트오류

0

109

1

http => htrtps 호출 인증서 신뢰 오류

0

350

1

self-signed certificate in certificate chain 에러 발생

0

413

1

mongoose 설치 오류

0

142

1

특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)

0

281

2

08-06

0

178

3

구조랑 패턴 관련해서 질문

0

125

2

mydocker

0

128

2

coolsms statuscode 2000 인데 전송안돼는 경우 확인.

0

156

1