0


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

🍳作者:

      贤蛋大眼萌,一名很普通但不想普通的程序媛
     
    
   
   
    \color{#FF0000}{贤蛋 大眼萌 ,一名很普通但不想普通的程序媛}
   
  
 贤蛋大眼萌,一名很普通但不想普通的程序媛🤳

🙊语录:

      多一些不为什么的坚持
     
    
   
   
    \color{#0000FF}{多一些不为什么的坚持}
   
  
 多一些不为什么的坚持

📝本文章收录于专栏:Node.js+koa–后端管理系统

💭

       眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂
      
      
       o
      
      
       f
      
      
       f
      
      
       e
      
      
       r
      
      
       ,程序员的必备刷题平台
      
      
       −
      
      
       −
      
      
       牛客网
      
     
    
   
   
    \color{#ff7f50}{眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台--牛客网}
   
  
 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台−−牛客网

👉🏻点击跳转刷题网免费注册学习

用户登录接口设计 | 登录验证 | 登录返回凭证(令牌)

🥩 登录接口设计

① 编写流程

  • 登录用户路由router编写;
  • 处理登录函数Login的controller编写;
  • 操作数据库的service编写;

② 登录用户基本逻辑设计

image-20220524162516281

image-20220524163725678

image-20220524162544061

🍬 编写验证登录中间件

//目录:@/middleware/auth_middleware.js// 用户登录验证中间件 constverifyLogin=async(ctx,next)=>{
  console.log('验证登录成功的midleware');// 1. 获取用户名和密码const{name, password}= ctx.request.body

  // 2.判断用户名和密码是否为空if(!name ||!password || name ===''||password ===''){const error =newError(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 =newError(errorTypes.USER_DOES_NOT_EXISTS)return ctx.app.emit('error',error,ctx)}// 4. 判断密码是否与数据库的存储一致if(md5password(password)!= user.password){const error =newError(errorTypes.PASSWORD_IS_INCORRENT)return ctx.app.emit('error',error,ctx)}
  ctx.user = user;awaitnext();}

🍚 登录返回凭证

① 生成公钥和私钥

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

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

image-20220526161358609

② 派发令牌

image-20220526162608419

③ 编写验证测试接口

image-20220526181222979

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

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

PS:

求知无坦途,学问无捷径。👣

     一步一个脚印,你走过的路,每一步都算数。
    
   
  
  
   \color{#ff7f50}{一步一个脚印,你走过的路,每一步都算数。}
  
 
一步一个脚印,你走过的路,每一步都算数。 每一次进步都是对自己努力的肯定。如果读了文章有收获,不如一起来学习,一起进步吧。传送门🚪刷题神器

image-20220917104224568


在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_47980825/article/details/126905798
版权归原作者 贤蛋大眼萌 所有, 如有侵权,请联系我们删除。

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

还没有评论