我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

      • nodejs有哪些全局对象,怎么用
      • 如何在nodejs中实现分页机制功能
      • 如何在nodejs实现文件上传功能
      • 如何实现nodejs鉴权机制,说一下思路
        • 是什么
        • 怎么用
        • 优缺点
        • FAQ
      • 说说nodejs中require的原理
      • 说说nodejs中的EventEmit是如何实现的
      • 说说nodejs中的事件循环机制理解
      • 说说nodejs中进程通信有哪些方式
      • 说说nodejs中间件是什么,如何封装一个中间件
      • 说说对buffer的理解及应用场景
      • 说说对fs模块的理解及常用方法
      • 说说对nodejs的理解及应用场景
      • 说说对process的理解及常用方法
      • 说说对stream的理解及应用场景
      • nodejs如何进行性能监控及优化
      • nodejs批量改文件名
    • git

    • CI

    • 小程序

    • docker

    • Typescript

    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • nodejs
fangdown
2021-08-16
目录

如何实现nodejs鉴权机制,说一下思路

# 是什么

nodejs中鉴权主要是JWT (JSON Web Token)

  • 流程 服务器验证用户的账号密码正确的时候,生成一个token,这个token作为后续访问的有效凭证
  • 组成
    • header
    • payload
    • sign

# 怎么用

  • 生成token
// 第三方库
const jwt = require("jsonwebtoken");
 const token = jwt.sign(  
  {
    name: result.name
  },
  "test_token", // secret
  { expiresIn: 60 * 60 } // 过期时间:60 * 60 s
);
//...
// 返回token
ctx.body = {
  code: "0",
  message: "登录成功",
  data: {
    token
  }
}
  • 请求中添加token
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  config.headers.common['Authorization'] = 'Bearer ' + token; // 留意这里的 Authorization
  return config;
})
  • 解密token
// 注意:放在路由前面
app.use(koajwt({
  secret: 'test_token'
}).unless({ // 配置白名单
  path: [/\/api\/register/, /\/api\/login/]
}))

# 优缺点

  • 优点
    • 通用,跨语言
    • 字节小,便于传输
    • 服务端无需保存会话信息
    • 可防护csrf
    • 解决单点登录
  • 缺点
    • 简单编码
    • 防止秘钥泄漏
    • 避免token被劫持,使用http是协议

# FAQ

#鉴权
上次更新: 2021/12/19, 18:05:42
如何在nodejs实现文件上传功能
说说nodejs中require的原理

← 如何在nodejs实现文件上传功能 说说nodejs中require的原理→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式