当前位置:网站首页>使用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
边栏推荐
猜你喜欢
随机推荐
基于Keras的时装分类案例
汇编 32位无符号加法计算器
浮点数双精度,单精度以及半精度知识总结
欢迎使用Markdown编辑器
特效案例收集:鼠标星球小尾巴
Notes on advanced points of C language 4
[UDS unified diagnostic service] II. Network layer protocol (1) - overview and functions of network layer
ES6面试题(参考文档)
Analysis and setting of dead time
统计字符串中每个字符出现的次数
Sdoi2009-hh Necklace
JS中 t, _ => 的解析
几款笔记软件的优缺点
查漏补缺(七)
卷积神经网络实现CIFAR100数据集分类
Shell脚本的通配符和特殊符号
cv_bridge 与opencv 版本不匹配的解决
金额输入框,用于充值提现
Detailed explanation and application principle of token
v-for下定时给图片添加动画