nodejs添加jsonwebtoken验证
具体使用模块:
使用compression压缩处理请求响应、cors模块添加跨域、helmet安全模块、body-parser解析请求参数、jsonwebtoken用于生成及校验token、使用内置cluster模块开启多进程模式,具体源码如下:
1、项目组成

2、具体源码
server.js:
// =================================================================
// get the packages we need ========================================
// =================================================================
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var morgan = require('morgan');
var mongoose = require('mongoose');
var cors = require('cors'); //cors支持
var compression = require('compression'); //压缩
var helmet = require('helmet'); //安全插件 var config = require('./config'); // get our config file
var User = require('./app/models/user'); // get our mongoose model
var Routes = require('./routes'); // get our mongoose model
var Authorize = require('./routes/authorize'); // get token model
var CheckToken = require('./routes/checktoken'); // check token model
var Signup = require('./routes/signup'); // signup model // =================================================================
// configuration ===================================================
// =================================================================
var port = process.env.PORT || 8080; // used to create, sign, and verify tokens
mongoose.connect(config.database); // connect to database // use body parser so we can get info from POST and/or URL parameters
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // use morgan to log requests to the console
app.use(morgan('common')); app.use(helmet()); //启用cors
app.use(cors({
origin: ['http://localhost:8080'],
methods: ['GET', 'POST'],
alloweHeaders: ['Conten-Type', 'x-access-token']
})); app.use(compression()); //受token保护的路由
app.use("/api", CheckToken);
Routes(app); // =================================================================
// start the server ================================================
// =================================================================
app.listen(port, function() {
console.log('My Api is running...');
});
config.js:
module.exports = {
'secret': 'ilovescotchyscotch',
'database': 'mongodb://127.0.0.1:27017/tokenApi'
};
cluster.js:
var cluster = require('cluster');
var os = require('os');
const CPUS = os.cpus();
if (cluster.isMaster) {
CPUS.forEach(function() {
cluster.fork();
});
cluster.on('listening', function(worker) {
console.log('Cluster %d connected', worker.process.pid);
});
cluster.on('disconnect', function(worker) {
console.log('Cluster %d disconnected', worker.process.pid);
});
cluster.on('exit', function(worker) {
console.log('Cluster %d dead', worker.process.pid);
// Ensuring a new cluster will start if an old one dies
cluster.fork();
});
} else {
require("./server");
}
其他源码已上传至github:https://github.com/caiya/node-token-authentication-api
注册:

访问受保护的路由:

根据用户名密码获取token:

发送错误的token:

发送正确的token:

nodejs添加jsonwebtoken验证的更多相关文章
- 利用nginx向现有网站添加登录验证功能(不添加修改现有网站代码)
在不改变现有网站代码的前提下加入验证功能: 1.假设现有网站后端nodejs,端口3000,nginx配置如下 server { listen 80; server_name localhost; l ...
- 用Retrofit发送请求中添加身份验证
用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...
- C#访问Java的WebService添加SOAPHeader验证的问题
原文:C#访问Java的WebService添加SOAPHeader验证的问题 这两天做与公司OA的接口,发现C#访问Java的WebService需要提供一个SOAP的头验证信息,但是WebServ ...
- C#调用Java的WebService添加SOAPHeader验证(2)
C#调用Java的WebService添加SOAPHeader验证 上一篇链接如上,更像是 Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#) 来处理xml, ...
- C#调用Java的WebService添加SOAPHeader验证
C#调用Java的WebService添加SOAPHeader验证(2) 1.问题描述 调用的Java的webservice string Invoke(string func, string req ...
- 初识Identity并添加身份验证管理页面
目录 初识Identity并添加身份验证管理页面 前言 什么是ASP.NET Core Identity 创建带有身份验证的WebApp 尝试运行 检查解决方案中的项目文件 发现问题 原因 解决问题 ...
- 为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS
下面我们来创建一个MVC 5.0的ASP.Net程序,并且将它部署到Azure Web Site上 通过Visual Studio 2015创建Web Project 在选择ASP.net模板的地方, ...
- 为Azure Web Site 添加ADFS验证支持之一 设置ADFS的信任关系
很多时候企业开发的应用都会通过AD(Active Directory)进行验证用户名密码的,在企业里面统一一个AD来进行账号密码管理也是一个很好的实践.当企业打算将一个应用迁移到Azure的时候,使用 ...
- mongodb添加登陆验证
mongodb添加登陆验证 转载地址 清空log,db目录 mongod --auth --logpath "D:\mongodb\log\log.log" --logappend ...
随机推荐
- iOS Mac忘记登录密码的4种解决方法
4种方法: 一.使用Apple ID重置用户账户密码 使用这个方法有一个前提 如上图红框,此项必须勾选,否则无法使用Apple ID重置密码.(如果你不记得有没有勾选,则你起码要记得首次启动 OS X ...
- COOKIE的优化与购物车小试
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 : --> 点击这里 一 Cookie 的优化 1.1 一般而言,我们设置cookie是在ph ...
- mysql 判断表字段或索引是否存在 - 举一反三
判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...
- JSONP前世今生及原理
https://blog.csdn.net/hansexploration/article/details/80314948 http://www.cnblogs.com/yuzhongwusan/a ...
- spring-boot打包,引入外部jar包问题
这是我引入的外部jar包,打包的时候找不到外部jar包路径 弄了好久 在lib下引入外部jar包,运行没问题,但是打包是出现问题了,具体解决办法 再pom中加入如下配置,告诉maven导入本地jar ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- python --爬虫基础 --爬取今日头条 使用 requests 库的基本操作, Ajax
'''思路一: 由于是Ajax的网页,需要先往下划几下看看XHR的内容变化二:分析js中的代码内容三:获取一页中的内容四:获取图片五:保存在本地 使用的库1. requests 网页获取库 2.fro ...
- 【HNOI2019】部分题简要题解
题意懒得写了 LOJ Day 1 T1 鱼 个人做法比较猎奇,如果有哪位大佬会证明能分享一下的话感激不尽. 题解:枚举鱼尾和鱼身的交点D,将所有其他点按照到D的距离排序,距离相同的分一组. 感性的理解 ...
- CentOS开放端口号
#vi /etc/sysconfig/iptables 在打开的文件中增加一份端口配置信息: A INPUT -p tcp -m state --state NEW -m tcp --dport 81 ...
- Windows7上用VS编译本地使用的live555
本文链接:https://www.jianshu.com/p/6ea100865744 环境 系统:Windows7 SP1 64位 编辑器:Visual Studio Community 2017 ...