当前位置:网站首页>使用jsonwebtoken生成访问密钥
使用jsonwebtoken生成访问密钥
2022-04-23 05:54:00 【MiMenge】
后端
const {
response } = require('express');
const express = require('express');
const fs = require('fs');
const jwt = require('jsonwebtoken');
const app = express();
app.use(express.urlencoded({
extended: false }));
app.use(express.json());
app.use('*', (request, response, next) => {
// // 获取头部的token
// let token = request.headers.authorization;
// // 校验token
// jwt.verify(token, 'MiMenge001018', (err, data) => {
// if (err && err.message === 'invalid token') {
// return response.json({ message: '无效 token', code: 0 });
// } else if (err && err.message === 'jwt expired') {
// return response.json({ message: '失效 token', code: 0 })
// }
// });
next();
});
app.get('/', (request, response) => {
fs.readFile('./public/index.html', (err, data) => {
if (err) {
response.json({
message: '找不到页面资源', code: 0 });
} else {
response.send(data.toString());
}
});
});
app.get('/demo', (request, response) => {
fs.readFile('./public/demo.html', (err, data) => {
if (err) {
response.json({
message: '找不到页面资源', code: 0 });
} else {
response.send(data.toString());
}
});
});
app.post('/login', (request, response) => {
let {
uname, password } = request.body;
if (uname === 'Tom' && password === '1234') {
let token = jwt.sign({
uname: 'MiMenge',
iSRoot: true
}, 'MiMenge001018', {
expiresIn: 60
});
response.json({
message: 'OK', code: 0, token, });
}
});
app.post('/data', (request, response) => {
let token = request.headers.authorization;
jwt.verify(token, 'MiMenge001018', (err, data) => {
if (err) {
if (err.message === 'invalid token') {
return response.json({
message: '无效 token', code: 0 });
} else {
return response.json({
message: '失效 token', code: 0 })
}
} else {
response.json({
message: '成功', code: 1 });
}
})
});
app.listen(3300, err => {
if (err) {
console.error(err);
return;
}
console.log('success');
});
前端
<!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>
<a href="">获取</a>
<script> let a = document.querySelector('a'); a.addEventListener('click', (e) => {
e.preventDefault(); let token = localStorage.getItem('token'); let headers = new Headers({
'Authorization': token }); fetch('http://localhost:3300/data', {
method: 'post', headers }).then(data => data.text()).then(value => console.log(value)); // // 创建请求对象 // let xml = new XMLHttpRequest(); // // 初始化请求 // xml.open('post', 'http://localhost:3300/data', true); // // 设置请求头 // xml.setRequestHeader('Content-Type', 'application/json;charset=utf8'); // // console.log(JSON.stringify(new AddO(uname, pwd))); // // 发送请求数据 // xml.send(JSON.stringify({ 'token': token })); // // 设置请求延时 // xml.timeout = 3000; // xml.addEventListener('timeout', () => {
// xml.abort(); // }); // xml.addEventListener('error', () => {
// alert('错误的请求') // }); // xml.addEventListener('readystatechange', () => {
// if (xml.readyState === 4) {
// if (xml.status >= 200 && xml.status < 300 || xml.status === 304) {
// console.log(xml.responseText); // // console.log(xml.responseURL); // // console.log(xml.status); // // console.log(xml.statusText); // } // } // }); }); </script>
</body>
</html>
版权声明
本文为[MiMenge]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_53584564/article/details/123786829
边栏推荐
- JS的解析与执行过程
- 微信小程序之改变数组中某值,对象中某值的方法
- undefined reference to `Nabo::NearestNeighbourSearch
- 逻辑回归原理及代码实现
- 获取当前一周的时间范围
- SQLite3 encrypted version
- [stepping on the pit] MELD in win11 wsl2 cannot be used normally. Problem repair
- HDU-Memory Control
- 微信小程序之点击取消,返回上页,修改上页的参数值,let pages=getCurrentPages() let prevPage=pages[pages.length - 2] // 上一页的数据
- MOS管特性和导通过程
猜你喜欢
随机推荐
写一个正则
查漏补缺(二)
基于TensorFlow的线性回归实例
var、let、const之间的区别
CUDA project encountered a series of compilation problems after changing the environment (computer)
JS高频面试题
FOC SVPWM function pwmc_ Setphasevoltage parsing
C语言 #和##的使用
useCenterHook
C language structure specifying initialization
监听除某元素之外点击事件
VHDL arbitrary frequency divider (50% duty cycle)
C51/C52 特殊功能寄存器表
QT icon application
汇编 32位无符号加法计算器
Analysis and setting of dead time
若依框架从零开始
C语言中volatile的使用
【无标题】js中的类型判断
元素计算距离与event事件对象








