【Node.js+koa--后端管理系统】用户登录接口设计 | 登录验证 | 登录返回凭证(令牌)

简介: 【Node.js+koa--后端管理系统】用户登录接口设计 | 登录验证 | 登录返回凭证(令牌)

登录接口设计


① 编写流程


登录用户路由router编写;

处理登录函数Login的controller编写;

操作数据库的service编写;


② 登录用户基本逻辑设计

微信图片_20221012173455.png微信图片_20221012173507.png微信图片_20221012173514.png

编写验证登录中间件

//目录:@/middleware/auth_middleware.js
// 用户登录验证中间件 
const verifyLogin = async(ctx,next)=>{
  console.log('验证登录成功的midleware');
  // 1. 获取用户名和密码
  const {name, password} = ctx.request.body
  // 2.判断用户名和密码是否为空
  if(!name ||!password || name ===''||password ===''){
    const error = new Error(errorTypes.NAME_OR_PASSWORD_IS_REQUIRED)
    return ctx.app.emit('error',error,ctx) 
 }
  // 3. 判断用户是否存在
  const result = await userServiece.getUserByName(name);
  const user = result[0];
  // console.log(user);
  if(!user){
    const error = new Error(errorTypes.USER_DOES_NOT_EXISTS)
    return ctx.app.emit('error',error,ctx) 
  }
  // 4. 判断密码是否与数据库的存储一致
  if(md5password(password) != user.password){
    const error = new Error(errorTypes.PASSWORD_IS_INCORRENT)
    return ctx.app.emit('error',error,ctx) 
  }
  ctx.user = user;
  await next();
}

登录返回凭证


① 生成公钥和私钥


注意:这里补充一下cookie和token的相关知识 http://t.csdn.cn/u4tO1

引入keys(参考http://t.csdn.cn/u4tO1 )–>将公钥和私钥写入配置文件下(src/app/config.js)

微信图片_20221012173714.png

② 派发令牌

微信图片_20221012173748.png

③ 编写验证测试接口

微信图片_20221012173815.png

④ 验证令牌(授权中间件0)

//目录:@/middleware/auth_middleware.js
const verifyAuth = async(ctx,next)=>{
  console.log('授权验证middleware(判断是否登录)');
  // 1. 获取token
  const authorization = ctx.headers.authorization;
  if (!authorization) {
    const error = new Error(errorTypes.UNAUTHORIZATION);
    return ctx.app.emit('error', error, ctx);
  }
  const token = authorization.replace('Bearer ','')
  // 2. 验证token
 try{
  const result = jwt.verify(token,PUBLIC_KEY,{
    algorithms:["RS256"]
  });
  ctx.user = result
  // console.log(ctx.user)
  await next();
 }catch(err){
  const error = new Error(errorTypes.UNAUTHORIZATION)
  ctx.app.emit('error',error,ctx)
 }
}


相关文章
|
10天前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
11天前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
49 2
|
10天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第7天】本文将带你进入Node.js的世界,从基本概念、环境搭建到实际案例,逐步深入探索Node.js在后端开发中的应用。我们将通过一个简单的在线聊天室项目,学习如何利用Node.js进行网络编程和数据处理,让你对Node.js有更全面的认识。
12 3
|
13天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第4天】本文将带你走进Node.js的世界,从基础的搭建到高级的应用,一步步揭示Node.js的强大与便捷。我们将通过实际的代码示例,让你在轻松的氛围中学习并掌握Node.js,开启你的后端开发之旅。
|
14天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第3天】在数字化时代的浪潮中,后端开发作为技术架构的核心,承载着数据处理和业务逻辑的重任。Node.js以其非阻塞I/O、事件驱动的特性,在众多后端技术中脱颖而出,成为高效、轻量级后端解决方案的代名词。本文将带领读者深入理解Node.js的精髓,从基础概念到实战应用,逐步揭示如何利用Node.js构建高性能的后端服务。通过浅显易懂的语言和实际案例分析,我们将探索Node.js在现代后端开发中的应用及其带来的变革。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往Node.js世界的大门,让你领略其背后的哲学和技术之美。
|
12天前
|
存储 JavaScript 前端开发
深入浅出Node.js: 从零到一搭建后端服务
【10月更文挑战第5天】在数字化时代的浪潮中,掌握一门后端技术变得尤为重要。Node.js,作为一种轻量、高效的平台,让JavaScript开发者能够轻松跨越前后端的界限。本文将带领初学者一步步了解Node.js的核心概念,并通过实践指导如何搭建一个简单的后端服务。我们将探索异步编程的魅力,模块化的便利,以及中间件的强大功能。准备好了吗?让我们开始Node.js的奇妙之旅!
|
5天前
|
JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(二)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
13 0
|
5天前
|
存储 JSON JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
27 0
|
13天前
|
Web App开发 JSON JavaScript
深入浅出:Node.js后端开发入门与实践
【10月更文挑战第4天】在这个数字信息爆炸的时代,了解如何构建一个高效、稳定的后端系统对于开发者来说至关重要。本文将引导你步入Node.js的世界,通过浅显易懂的语言和逐步深入的内容组织,让你不仅理解Node.js的基本概念,还能掌握如何使用它来构建一个简单的后端服务。从安装Node.js到实现一个“Hello World”程序,再到处理HTTP请求,文章将带你一步步走进Node.js的大门。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往后端开发新世界的大门。
|
JavaScript 前端开发 Java
JavaScript 验证串讲| 学习笔记
快速学习 JavaScript 验证串讲
JavaScript 验证串讲| 学习笔记