一、 身份验证
1、JWT(JSON Web Token)
- 用户登录,服务器产生一个token(加密字符串)发送给前端
- 前端将token进行保存
- 前端发起数据请求的时候携带token
- 服务端验证token是否合法,如果合法则继续操作,不合法就终止操作
- token的使用场景:无状态请求,保持用户的登录状态,第三方登录
2、非对称加密 通过私钥产生token 通过公钥解密token
- 安装OpenSSL、Perl软件(先装Perl,傻瓜式安装,安装好配置环境变量)
- 示例代码如下:
const express = require( 'express' )
const router = express.Router()
const fs = require( 'fs' )
const path = require( 'path' )
const jwt = require( 'jsonwebtoken' )
router.post('/login',( req,res,next ) => {
res.setHeader('Access-Control-Allow-Origin','*')
// 接收前端传来的数据
const { username,password } = req.body
// 获取我们创建的私钥和公钥
const privateKey = fs.readFileSync( path.join( __dirname,'../rsa/private_key.pem') )
const publicKey = fs.readFileSync( path.join( __dirname, '../rsa/public_key.pem' ))
// 通过jwt将用户名和私钥结合 ,然后在通过RS256加密算法,输出最终的token
const token = jwt.sign( username, privateKey, { algorithm: 'RS256' })
/*
通过public进行解密
const newToken = 'eyJhbGciOiJSUzI1NiJ9.MTE.SrtxG9-mwK2MGWL4vrJjq9FAghlL3-daZUV9hUA3yOrnMGXFLVKE8Zwj90f0eB02D7nfclYd1PN8DGcQS62u8Qc8CGSbtERoSJuDG_D1fXR-my3HmzXAVPkxde5e7764_bYaZ85atn15B3LLUZiQMYfryGS2z4DJ58-J3RylhgY'
const decode = jwt.verify( newToken,publicKey )
console.log( decode )
*/
res.render('login',{
data: JSON.stringify({
info: '登录成功',
token
})
})
})
module.exports = router
二、测试工具
1、mocha
- 现在比较流行的JavaSscript测试框架之一,可以运行于Node环境和浏览器环境
- 可以为JavaScript应用 添加测试,从而保证代码质量
- 单一运行某一文件
- 运行命令为
mocha 文件名
2、Jest
- 全局检测项目里的test文件
- test里的文件命名:login.js login.test.js
- 运行命令为
jest
三、yarn
- 是与cpm/cnpm一样的包管理器
- 安装
$cnpm i yarn -g