专栏首页西安-晁州nodejs添加jsonwebtoken验证

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

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

注册:

访问受保护的路由:

根据用户名密码获取token:

发送错误的token:

发送正确的token:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NodeJS 使用 jsonwebtoken 创建 JWT 格式的 token 和验证

    在 NodeJS web server 项目上,我们需要做登录验证,通过 用户名和密码 换取 token 是常用的方式。

    zhangyunfeiVir
  • 使用NodeJs(Express)搞定用户注册、登录、授权

    首先做一下声明,本篇博客来源于BiliBili上全栈之巅主播Johnny的视频[1小时搞定NodeJs(Express)的用户注册、登录和授权(https://...

    ccf19881030
  • jsonwebtoken生成与解析token

    之前写了一篇介绍token的文章:简单理解Token机制,token算法自己设计的,使用了随机算法,导致token无法进行反向解密。所以我当初使...

    创译科技
  • 基于NodeJS的KOA2框架实现restful API网站后台

    在此前写的文章“从零基础入门进行小程序开发实战”中,已经介绍过背单词的小程序,因为没有备案的服务器资源只能使用系统后台提供的缓存功能存储用户数据。缓存有大小限制...

    程序你好
  • 入门 | egg.js 入门之egg-jwt

    这里创建并安装完成以后,需要再次初始化俩包,分别为egg-cors与egg-jwt token 生成的验证包

    mySoul
  • 集成 SpringBoot 2.3.2 + Shiro 1.5.3 + jwt (无状态)

    shiro 集成 jwt 需要禁用 session, 服务器就不用维护用户的状态, 做到无状态调用

    北漂的我
  • yii添加csrf验证

    yii2X版本的请绕行,这里说的是yii 1.1.14版本。某某公司的老程序当中没有考虑csrf攻击,所以不幸中枪了。(具体地址我就不贴了,说下解决方案) 配置...

    苦咖啡
  • JWT 鉴权

    Ewall
  • Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台

    最近在跟着Johnny的全栈之巅系列视频教程学习使用NodeJS+Express+Element-UI+MongoDB等开发王者荣耀,服务端server,移动端...

    ccf19881030
  • 30个有用的npm包

    很早之前,软件工程师就通过减少程序中重复代码来显著加速开发过程。Nodejs生态通过npm包的形式复用代码,目前累计有超过100多万个开源可用的包。其中一些流行...

    腾讯新闻前端团队
  • 开发 React Native 前必须知道的几件事

    时见疏星
  • Koa2+MongoDB+JWT实战--Restful API最佳实践

    Web API 已经在最近几年变成重要的话题,一个干净的 API 设计对于后端系统是非常重要的。

    前端森林
  • 常见登录认证 DEMO

    basic auth 是最简单的一种,将用户名和密码通过 form 表单提交的方式在 Http 的 Authorization 字段设置好并发送给后端验证

    JS菌
  • SpringSecurity登录添加验证码

    登录添加验证码是一个非常常见的需求,网上也有非常成熟的解决方案,其实,要是自己自定义登录实现这个并不难,但是如果需要在SpringSecurity框架中实现这个...

    江南一点雨
  • WordPress评论添加验证码

    WordPress在互联网上面有34%的使用率,从业余爱好的博客到新闻网站很多都是使用的WordPress源码,因为使用的人比较多,所以很多的人开发了一些发送垃...

    爱游博客
  • 【每周一库】- JWT的Rust实现

    支持RFC中的所有参数,但默认的标头只有typ和alg这两个集。在你需要设置kid参数或者更改算法时可以这样做:

    MikeLoveRust
  • JWT实现token-based会话管理

    上文《3种web会话管理的方式》介绍了3种会话管理的方式,其中token-based的方式有必要从实现层面了解一下。本文主要介绍这方面的内容。上文提到token...

    wangxl
  • 使用node+express+mongodb实现用户注册、登录和验证功能

    无论是手机端还是pc端,几乎都包含登录注册方面功能,今天就使用node+express+mongodb实现一套登录注册功能,这里需要自己去安装MongoDB环境...

    小周sri的码农
  • JWT在CTF中的问题

    它的构成:第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).

    字节脉搏实验室

扫码关注云+社区

领取腾讯云代金券