• 티스토리 홈
  • 프로필사진
    KIMJAVAN
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
KIMJAVAN
  • 프로필사진
    KIMJAVAN
    • 개발 (160)
      • 마크업 언어 (19)
        • HTML (7)
        • CSS (12)
      • 자바스크립트 (85)
        • JavaScript (34)
        • JS Library (6)
        • React (13)
        • threeJS (6)
        • TypeScript (2)
        • Next js (5)
        • Node JS (18)
        • webGL (1)
      • AI (4)
        • chat-gpt (4)
      • flutter (17)
        • dart (11)
        • flutter (6)
      • Sql (3)
      • PHP (4)
      • Python (2)
      • Git (4)
      • vscode (1)
      • 개발 도움 사이트 (7)
      • 작업기록 (1)
      • 오류 모음 (3)
      • 메모장 (7)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [NodeJS] Autorization / Header
        2024년 04월 01일
        • KIMJAVAN
        • 작성자
        • 2024.04.01.:28
        728x90

        "Authorization"은 보통 HTTP 요청 헤더에 담겨서 전송되며, 해당 요청이 서버에서 수행되기 전에 권한 부여에 대한 정보를 전달합니다. 이를 통해 서버는 요청을 수신한 후 해당 요청이 허용되는지 여부를 결정할 수 있습니다.

         

        일반적으로 "Authorization" 헤더에는 사용자 인증을 위한 정보가 포함되는데, 이는 보통 토큰 기반 인증 방식에서 많이 사용됩니다. 예를 들어, JWT(JSON Web Token)를 사용하는 경우, 클라이언트는 HTTP 요청의 "Authorization" 헤더에 JWT를 담아서 서버에 전송합니다. 이 JWT에는 사용자의 인증 상태와 권한 정보가 포함되어 있습니다. 서버는 이 토큰을 검증하여 사용자의 인증 상태를 확인하고, 해당 요청이 허용되는지 여부를 결정합니다.

         

        따라서 "Authorization" 헤더를 사용하면 클라이언트는 요청을 보낼 때 필요한 인증 정보를 헤더에 포함시켜서 서버에 전달할 수 있습니다. 서버는 이 정보를 기반으로 요청을 처리하고, 필요한 경우 요청을 거부할 수 있습니다.

         

        // 백엔드 서버 코드 (예: app.js)
        
        const express = require('express');
        const knex = require('knex')({
          client: 'mysql',
          connection: {
            host: 'your_database_host',
            user: 'your_database_user',
            password: 'your_database_password',
            database: 'your_database_name'
          }
        });
        
        const app = express();
        
        app.get('/api/userinfo', async (req, res) => {
          try {
            // 헤더에서 Authorization 값을 가져옵니다.
            const token = req.headers.authorization;
        
            // 여기서는 간단히 JWT를 디코딩하는 것으로 가정합니다.
            // 실제 프로젝트에서는 더 복잡한 로직이 필요할 수 있습니다.
            const decoded = decodeJWT(token);
        
            // 디코딩된 정보를 바탕으로 데이터베이스에서 사용자 정보를 가져옵니다.
            const userInfo = await knex('users').where('id', decoded.userId).first();
        
            res.json(userInfo);
          } catch (error) {
            console.error('Error:', error);
            res.status(500).json({ error: 'Server error' });
          }
        });
        
        app.listen(3001, () => {
          console.log('Server is running on port 3001');
        });
        
        function decodeJWT(token) {
          // JWT 디코딩 로직은 여기에 구현되어야 합니다.
          // 실제로는 JWT 라이브러리를 사용하거나 직접 구현해야 합니다.
          // 이 예제에서는 간단하게 가정합니다.
          const decoded = { userId: '123' };
          return decoded;
        }
        // 프론트엔드 컴포넌트 코드 (예: UserInfo.js)
        
        import React, { useEffect, useState } from 'react';
        import axios from 'axios';
        
        function UserInfo() {
          const [userInfo, setUserInfo] = useState(null);
        
          useEffect(() => {
            // 사용자 정보 요청을 보내는 함수
            async function fetchUserInfo() {
              try {
                // 서버로 요청을 보낼 때 Authorization 헤더에 JWT를 포함시킵니다.
                const token = 'your_jwt_token_here';
                const response = await axios.get('/api/userinfo', {
                  headers: {
                    Authorization: `Bearer ${token}`
                  }
                });
                setUserInfo(response.data);
              } catch (error) {
                console.error('Error:', error);
              }
            }
        
            fetchUserInfo();
          }, []);
        
          return (
            <div>
              {userInfo ? (
                <div>
                  <h2>User Information</h2>
                  <p>Username: {userInfo.username}</p>
                  <p>Email: {userInfo.email}</p>
                </div>
              ) : (
                <p>Loading...</p>
              )}
            </div>
          );
        }
        
        export default UserInfo;
        저작자표시 비영리 변경금지 (새창열림)

        '자바스크립트 > Node JS' 카테고리의 다른 글

        [NodeJs] POST PUT 차이  (0) 2024.04.01
        [Node JS] header / body 에 값 담기 차이  (0) 2024.04.01
        [NodeJS] select from 순서  (0) 2024.04.01
        [NodeJS] req, res  (0) 2024.04.01
        [Node JS] 기본 CRUD  (0) 2024.03.21
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바