具体使用模块:

使用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");
}

其他源码已上传至githubhttps://github.com/caiya/node-token-authentication-api

注册:

访问受保护的路由:

根据用户名密码获取token:

发送错误的token:

发送正确的token:

nodejs添加jsonwebtoken验证的更多相关文章

  1. 利用nginx向现有网站添加登录验证功能(不添加修改现有网站代码)

    在不改变现有网站代码的前提下加入验证功能: 1.假设现有网站后端nodejs,端口3000,nginx配置如下 server { listen 80; server_name localhost; l ...

  2. 用Retrofit发送请求中添加身份验证

    用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...

  3. C#访问Java的WebService添加SOAPHeader验证的问题

    原文:C#访问Java的WebService添加SOAPHeader验证的问题 这两天做与公司OA的接口,发现C#访问Java的WebService需要提供一个SOAP的头验证信息,但是WebServ ...

  4. C#调用Java的WebService添加SOAPHeader验证(2)

    C#调用Java的WebService添加SOAPHeader验证 上一篇链接如上,更像是 Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#) 来处理xml, ...

  5. C#调用Java的WebService添加SOAPHeader验证

    C#调用Java的WebService添加SOAPHeader验证(2) 1.问题描述 调用的Java的webservice string Invoke(string func, string req ...

  6. 初识Identity并添加身份验证管理页面

    目录 初识Identity并添加身份验证管理页面 前言 什么是ASP.NET Core Identity 创建带有身份验证的WebApp 尝试运行 检查解决方案中的项目文件 发现问题 原因 解决问题 ...

  7. 为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS

    下面我们来创建一个MVC 5.0的ASP.Net程序,并且将它部署到Azure Web Site上 通过Visual Studio 2015创建Web Project 在选择ASP.net模板的地方, ...

  8. 为Azure Web Site 添加ADFS验证支持之一 设置ADFS的信任关系

    很多时候企业开发的应用都会通过AD(Active Directory)进行验证用户名密码的,在企业里面统一一个AD来进行账号密码管理也是一个很好的实践.当企业打算将一个应用迁移到Azure的时候,使用 ...

  9. mongodb添加登陆验证

    mongodb添加登陆验证 转载地址 清空log,db目录 mongod --auth --logpath "D:\mongodb\log\log.log" --logappend ...

随机推荐

  1. 使用Anaconda的python安装虚拟环境是出现错误:python -m venv venvdir----Error: Command '['D:\\Development\\Django\\test\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit

    在创建python虚拟环境的时候,如果使用的是Anaconda中集成的python -m venv venvdir就会出现不能安装pip的错误,原因是Anaconda没有ensurepip, 解决办法 ...

  2. 2018 OCP 052最新题库及答案-4

    4.For which requirement should you configure shared servers? A) accommodating an increasing number o ...

  3. “全栈2019”Java异常第十五章:异常链详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  4. BZOJ 1412--狼和羊的故事(最小割)

    1412: [ZJOI2009]狼和羊的故事 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3316  Solved: 1664[Submit][St ...

  5. 【vue】——CDN或全局引入CSS、JS。

    在入口文件index.html中添加 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  6. PHP错误——Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)

    解释是可用内存已耗尽,这关系到PHP的memory_limit的设置问题. 这里有两种方法解决 1.修改php.ini memory_limit = 128 打开终端输入下列bash命令 cd /pr ...

  7. vscode调试typescript

    1.记录一个插件:https://www.npmjs.com/package/ts-node # Locally in your project  npm install -D ts-node npm ...

  8. node-redis模块需要注意的事项

    node之中连接redis使用的redis模块,虽然好用,但是有些地方还是需要注意. npm install redis redis client 行为:1.客户端执行过程中断网的情况 由于原本连接正 ...

  9. HDU 4508 湫湫系列故事——减肥记I

    原题链接:点击此处 解题思路: 思路与01背包差不多,思路用二维数组表示: dp[i][v]=max{dp[i-1][v-k*b[i]]+k*a[i]|0<=k*b[i]<=v} 其dp( ...

  10. 一、OPENERP 的一个demo

    安装好OPENERP后,使用 ps -aux|grep openerp 从输出的内容可以得到OPENERP的安装信息, /usr/bin/python /usr/bin/openerp-server ...