0%

一,项目搭建

1. 初始化

  • 初始化:npm init -y
  • 安装第三方库:
    • koa
    • npm i nodemon -D
    • dotenv:将.env文件加载到process.env中
    • koa-router
    • koa-bodyparser:解析json数据
    • mongoose
    • koa2-cors:解决跨域问题
    • jsonwebtoken:实现jwt
  • 配置package.json:”start”: “nodemon ./src/main.js”

二,JWT

1. md5加密

传入的密码必须是字符串形式

2. 认识token

步骤一:生成token,登录的时候颁发token

步骤二:验证token,访问某些资源或接口时,验证token

3. JWT实现token机制

类似一个有锁的日记本,内容进行了混淆

HS256是对称加密

  • header
    • alg:采用的加密算法,默认是 HMAC SHA256(HS256),采用同一个密钥进行 加密和解密
    • typ:JWT,固定值,通常都写成JWT即可
    • 会通过base64Url算法进行编码
  • payload
    • 携带的数据,比如我们可以将用户的id和name放到payload中
    • 默认也会携带iat(issued at),令牌的签发时间
    • 我们也可以设置过期时间:exp(expiration time)
    • 会通过base64Url算法进行编码
  • signature
    • 设置一个secretKey,通过将前两个的结果合并后进行HMACSHA256的算法
    • HMACSHA256(base64Url(header)+.+base64Url(payload), secretKey)
    • 但是如果secretKey暴露是一件非常危险的事情,因为之后就可以模拟颁发token, 也可以解密token

4. 非对称加密

这个时候我们可以使用非对称加密,RS256

  • 私钥(private key):用于发布令牌
  • 公钥(public key):用于验证令牌
  • 我们可以使用openssl来生成一对私钥和公钥
    1. openssl
    2. genrsa -out private.key 1024 (生成私钥)
    3. rsa -in private.key -pubout -out public.key (使用私钥生成公钥)

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

阅读全文 »

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

阅读全文 »

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

阅读全文 »

我们通过工具将代码发布到特定的位置;其他程序员直接通过工具来安装、升级、删除我们的工具代码

阅读全文 »

ES6官方化了模块,使得在浏览器端不再需要引入额外的库来实现模块化的编程(当然浏览器的支持与否,这里暂不讨论)。ES Module的使用也很简单,相关语法也很少,核心是import和export

阅读全文 »