前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs添加jsonwebtoken验证

nodejs添加jsonwebtoken验证

作者头像
用户1141560
发布2019-05-24 20:29:36
1.1K0
发布2019-05-24 20:29:36
举报
文章被收录于专栏:西安-晁州西安-晁州

具体使用模块:

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

1、项目组成

2、具体源码

server.js:

代码语言:javascript
复制
// =================================================================
// 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:

代码语言:javascript
复制
module.exports = {

	'secret': 'ilovescotchyscotch',
	'database': 'mongodb://127.0.0.1:27017/tokenApi'
	
};

cluster.js:

代码语言:javascript
复制
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:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-04-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档