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 |