[Node.js] exports router

2022. 8. 10. 23:10·개발/node.js
728x90
반응형

1. exports 로 router 내보내기, 쓰기

app.js에 루트경로로 설정해준후 view라는 폴더안에 page.html과 page.js를 작성한다.

const express = require("express");
const app = express()

app.use(express.static(__dirname));

(1) page.js

const express = require("express");
// express 라우터 설정해보기 express.Router() 반환값이 있는 함수
const router = express.Router();
const fs = require("fs");

router.get("/", (req, res) => {
  fs.readFile("view/page.html", "utf-8", (err, data) => {
    res.send(data);
  });
});

// 설정한 라우터 내보내기
// module.exports로 내보내면 require함수를 이용해서 모듈처럼 받아 올수 있다.
module.exports = router;

(2) page.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    첫페이지
    <form action="/login" method="post">
      <button>사용자 로그인</button>
    </form>
  </body>
</html>

먼저 라우터로 html 을 읽어온다.

 

다음 app.js에서 require로 exports한 router를 가져온다.

const page = require("./view/page");

app.use(page);

2. jwt를 만들고 exports

(1) token.js

// jwt express, router
const jwt = require("jsonwebtoken");
const express = require("express");
const app = express();
const router = express.Router();
const dot = require("dotenv");
dot.config();
const secretkey = process.env.SECRETKEY;
const fs = require("fs");

router.post("/login", (req, res) => {
  const name = "taesk";
  let token = jwt.sign(
    {
      type: "JWT",
      name,
    },
    secretkey,
    {
      expiresIn: "5m",
      issuer: "admin",
    }
  );
  req.session.token = token;
  let temp = {
    msg: "토큰발급됨",
    token,
  };
  fs.readFile("view/page2.html", "utf-8", (err2, data) => {
    res.send(data);
  });
});

//설정한 라우터 내보내기
module.exports = router;

다음 발급한 토큰을 확인하는 verify.js를 만듬

토큰을 확인하는 페이지 page2.html을 작성

(2) veryfy.js

const express = require("express"),
  app = express(),
  router = express.Router();
const jwt = require("jsonwebtoken");

const dot = require("dotenv");
dot.config();
const secretkey = process.env.SECRETKEY;

//app.js에서 use()함수로 요청 url을 설정해서
// /userView url 부터 시작
router.post("/", (req, res) => {
  const token = req.session.token;
  jwt.verify(token, secretkey, (err, decoded) => {
    if (err) {
      console.log("정상적이지 않은 토큰");
    }
    //해석된 객체
    console.log(decoded);
    res.send(decoded);
  });
});

module.exports = router;

(3)  page2.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <form action="/userView" method="post">
      <button>사용자 토큰 정보</button>
    </form>
  </body>
</html>

다음 app.js에서 use를 해주면된다.

verify는 경로를 따로 설정해주면된다.

app.use(createToken);
app.use("/userView", verify);

3. 결과

728x90
반응형

'개발 > node.js' 카테고리의 다른 글

[Node.js] access token, refresh token 을 활용하여 로그인 유지시키기  (0) 2022.08.16
[Node.js] 로그인 Access Token, Refresh Token  (0) 2022.08.16
[Node.js] 로그인시 jwt과 session  (0) 2022.08.09
[Node.js] 로그인시 JWT생성  (0) 2022.08.09
[Node.js] 채팅, 귓속말 기능 만들기  (0) 2022.07.29
'개발/node.js' 카테고리의 다른 글
  • [Node.js] access token, refresh token 을 활용하여 로그인 유지시키기
  • [Node.js] 로그인 Access Token, Refresh Token
  • [Node.js] 로그인시 jwt과 session
  • [Node.js] 로그인시 JWT생성
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    node
    React
    html
    go언어
    하이퍼레저
    go
    30일 챌린지
    js
    30일챌린지
    ERC721
    erc20
    node.js
    mysql
    도커
    컨테이너
    명령어
    CSS
    프로그래머스
    nodejs
    블록체인
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[Node.js] exports router
상단으로

티스토리툴바