一. 敏感数据加密
1.安装并引入中间件
    npm install utility
    const utils = require('utility')
2.加密方法
    function md5Pwd(pwd) {
        const salt = 'sensetime_is_good_5589x321yza67.!@#IUHJh~~'
        return utils.md5(utils.md5(pwd + salt))
    }
3.登录注册均调用 md5Pwd()
    例如:
        User.findOne({
            user,
            pwd: md5Pwd(pwd)
        }

二. Token
1.安装并引入中间件
    npm install express-jwt
    npm install jsonwebtoken
    const expressJWT = require('express-jwt')
    const jwt = require('jsonwebtoken')
2.设置API白名单
    const expressJWT = require('express-jwt')
    const secretOrPrivateKey = "SENSETIMEencipherment 1895@#$%^&*_" // 密钥
    app.use(expressJWT({
        secret: secretOrPrivateKey
    }).unless({
        path: ['/user/login','/user/register'] //白名单
    }))
3.验证token
    app.use(function(err, req, res, next) {
        if (err.name === 'UnauthorizedError') {
            res.status(401)
            return res.json({
                code: -1,
                message: 'token已过期'
            })
        }
        if (err.name === 'TokenExpiredError') {
            res.status(401)
            return res.json({
                code: -2,
                message: '没有token'
            })
        }
    })
4.获取token
    Router.post('/login', function(req, res) {
        // ... 这里写查询数据库的代码

/*
        * 登录成功后返回的数据:
        * username用户名,String ,
        * userinfo用户信息,Object ,
        * authority菜单权限,Array
        **/
        res.json({
            result: 'ok',
            data:{ userinfo, authority},
            token: jwt.sign( { name: username }, secretOrPrivateKey, { expiresIn: 60 * 60 * 24 * 7 }),
        })
    })

4.加密与token(node+express)的更多相关文章

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

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

  2. 【原】小玩node+express爬虫-2

    上周写了一个node+experss的爬虫小入门.今天继续来学习一下,写一个爬虫2.0版本. 这次我们不再爬博客园了,咋玩点新的,爬爬电影天堂.因为每个周末都会在电影天堂下载一部电影来看看. talk ...

  3. Node+Express+node-mysql 实战于演习 全套mysql(增删改查)

    最近这段时间研究Node感觉不错,自己做了一个增删改查,虽然有些简陋,但是思想是想通的,其实所有项目都是增删改查,有助于初学者快速掌握Node 首先 本实例展示的是基于Node+Express+nod ...

  4. Node Express 4.0 安装

    前言 今天想要用nodejs 写个后台服务,很久之前看过node express 框架,可真当向下手安装的时候,发现好多命令都不记得了.写完后台服务,没事了,总结了下安装过程,记录一下,以便以后查阅方 ...

  5. node express

    在某QQ群里,发现大家都在搞node,为了不被out,这周主要研究了一下,还挺高大上. 参考了下资料,适合初学者学习. Node和NPM的安装够便捷了,不细说...有几点基础顺手提一下: 安装命令中的 ...

  6. Webpact打包React后端Node+Express

    Webpact打包React后端Node+Express 前言 React官方推荐用Browserify或者Webpack 来开发React组件. Webpack 是什么?是德国开发者 Tobias ...

  7. Node+Express+MongoDB + Socket.io搭建实时聊天应用

    Node+Express+MongoDB + Socket.io搭建实时聊天应用 前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战 ...

  8. 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统

    很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...

  9. Node Express 初探

    一如既往,先上一张图 Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. 关于Express更多相关知识请链接至官网http://www.expressjs.com.c ...

  10. 零基础实现node+express个性化聊天室

    本篇文章使用node+express+jquery写一个个性化聊天室,一起来get一下~(源码地址见文章末尾) 效果图 项目结构 实现功能 登录检测 系统自动提示用户状态(进入/离开) 显示在线用户 ...

随机推荐

  1. html之锚点

    我命由我不由天 豆瓣:哪吒之魔童降世 哪吒之魔童降世简述 更新描述或海报 导演: 饺子 编剧: 饺子 / 易巧 / 魏芸芸 主演: 吕艳婷 / 囧森瑟夫 / 瀚墨 / 陈浩 / 绿绮 / 更多... ...

  2. 《利用Hyper-V搭建虚拟机》一篇管够,持续更新

    开门见山:win10+Hyper-V+ContOS7.X 万物皆有目的:没钱买云服务器,但平时在家想持续学习,可以考虑在自己windows上搭建一台虚拟机,然后装上Linux,调试通网络进行开发. 涉 ...

  3. 医学图像 | 使用深度学习实现乳腺癌分类(附python演练)

    乳腺癌是全球第二常见的女性癌症.2012年,它占所有新癌症病例的12%,占所有女性癌症病例的25%. 当乳腺细胞生长失控时,乳腺癌就开始了.这些细胞通常形成一个肿瘤,通常可以在x光片上直接看到或感觉到 ...

  4. TensorFlow系列专题(二):机器学习基础

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/ ,学习更多的机器学习.深度学习的知识! 目录: 数据预处理 归一化 标准化 离散化 二值化 哑编码 特征 ...

  5. 初始化一个vue项目

    1.安装node 端开发框架和环境都是需要 Node.js ,先安装node.js开发环境,vue的运行是要依赖于node的npm的管理工具来实现,下载https://nodejs.org/en/,安 ...

  6. [HDU1029]Ignatius and the Princess IV<桶 水题>

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1029 题目大意: 多组数据,每组数据先给一个n,然后给n各数字,找出n各数字中出现了至少(n+1)/2 ...

  7. Hadoop调试记录(1)

    错误 ERROR: Can't get master address from ZooKeeper; znode data == null 解决 关闭hadoop,发现stop-all.sh后几个进程 ...

  8. ftp 无法显示远程文件夹

    翻阅了网上前辈们的答案,都未能解决,所以就研究了一下 不需要防火墙的情况,关闭防火墙即可 下面使用的iptables防火墙验证的,其他的请自行验证 研究了好久,发现ftp使用端口波动很大,大概在300 ...

  9. CodeForces - 817B(分类讨论 + 排列组合)

    题目链接 思路如下 这一题是:最菜的队伍只有三个人组成,我们只需对排序后的数组的 前三个元素进行分类讨论即可: a[3] != a[2] && a[3] != ar[1] a[3] = ...

  10. python学习笔记--字符串格式化

    字符串和常量 print(r'hello\py\thon') r 代表后面字符不进行转义,原样输出; 表示常量,命名时变量名字大写代表常量.NAME = 'liulixue'; 字符串表示:' ', ...