国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

cool Node后端 中實現(xiàn)中間件的書寫

這篇具有很好參考價值的文章主要介紹了cool Node后端 中實現(xiàn)中間件的書寫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.需求

在node后端中,想實現(xiàn)一個專門鑒權(quán)的文件配置,可以這樣來解釋 就是 有些接口需要token調(diào)用接口,有些接口不需要使用token 調(diào)用?

這期來詳細(xì)說明一下

? ? ?什么是中間件中間件顧名思義是指在請求和響應(yīng)中間,進(jìn)行請求數(shù)據(jù)的攔截處理,數(shù)據(jù)校驗,并且進(jìn)行邏輯處理后判斷是否允許進(jìn)入下一個中間件。中間件分為前綴中間件,后置中間件??梢杂糜跈?quán)限認(rèn)證。日志記錄等

2.cool 中的中間件

cool 官方的說明文檔

cool Node后端 中實現(xiàn)中間件的書寫,中間件

控制器(Controller) | COOL官網(wǎng)

3.用戶鑒權(quán)問題文章來源地址http://www.zghlxwxcb.cn/news/detail-829795.html

import { App, Config, Inject, Middleware } from '@midwayjs/decorator';
import * as _ from 'lodash';
import { RESCODE } from '@cool-midway/core';
import * as jwt from 'jsonwebtoken';
import { NextFunction, Context } from '@midwayjs/koa';
import { IMiddleware, IMidwayApplication } from '@midwayjs/core';
import { CacheManager } from '@midwayjs/cache';

/**
 * 權(quán)限校驗
 */
@Middleware()
export class BusinessAuthorityMiddleware
  implements IMiddleware<Context, NextFunction>
{
  @Config('koa.globalPrefix')
  prefix;

  @Config('module.business')
  jwtConfig;

  @Inject()
  cacheManager: CacheManager;

  @App()
  app: IMidwayApplication;

  resolve() {
    return async (ctx: Context, next: NextFunction) => {
      let statusCode = 200;
      let { url } = ctx;
      url = url.replace(this.prefix, '');
      const token = ctx.get('Authorization');
      const adminUrl = '/app/';
      //忽略token驗證的url
      const ignoreUrls = [];
      // 路由地址為 /app/前綴的 需要權(quán)限校驗
      if (_.startsWith(url, adminUrl)) {
        try {
          ctx.admin = jwt.verify(token, this.jwtConfig.jwt.secret);
        } catch (err) {}
        // 不需要登錄 無需權(quán)限校驗
        if (
          new RegExp(`^${adminUrl}?.*/open/`).test(url) ||
          ignoreUrls.includes(url)
        ) {
          await next();
          return;
        }
        if (ctx.admin) {
          const rToken = await this.cacheManager.get(
            `business:token:${ctx.admin.userId}`
          );
          // 要登錄每個人都有權(quán)限的接口
          if (new RegExp(`^${adminUrl}?.*/comm/`).test(url)) {
            await next();
            return;
          }
          // 如果傳的token是refreshToken則校驗失敗
          if (ctx.admin.isRefresh) {
            ctx.status = 401;
            ctx.body = {
              code: RESCODE.COMMFAIL,
              message: '(1)登錄失效~',
            };
            return;
          }
          // 判斷密碼版本是否正確
          const passwordV = await this.cacheManager.get(
            `business:passwordVersion:${ctx.admin.userId}`
          );
          if (passwordV != ctx.admin.passwordVersion) {
            ctx.status = 401;
            ctx.body = {
              code: RESCODE.COMMFAIL,
              message: '(2)登錄失效~',
            };
            return;
          }

          if (!rToken) {
            ctx.status = 401;
            ctx.body = {
              code: RESCODE.COMMFAIL,
              message: '(3)登錄失效或無權(quán)限訪問~',
            };
            return;
          }
        } else {
          statusCode = 401;
        }
        if (statusCode > 200) {
          ctx.status = statusCode;
          ctx.body = {
            code: RESCODE.COMMFAIL,
            message: '(4)登錄失效或無權(quán)限訪問~',
          };
          return;
        }
      }
      await next();
    };
  }
}

到了這里,關(guān)于cool Node后端 中實現(xiàn)中間件的書寫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • node中間件-express框架

    node中間件-express框架

    方式一 : express提供的腳手架,直接創(chuàng)建一個應(yīng)用的骨架 安裝腳手架npm install -g express-generator 創(chuàng)建項目 express express-demo 安裝依賴npm install 啟動項目 node bin/www 方式二 : 從零搭建自己的express應(yīng)用結(jié)構(gòu); 初始化項目 npm init 安裝express npm i express 導(dǎo)入–創(chuàng)建–監(jiān)聽 使用參考文檔 中

    2024年02月16日
    瀏覽(33)
  • java后端技術(shù)匯總 + 中間件 + 架構(gòu)思想

    1. 華為OD機考題 + 答案 2023華為OD統(tǒng)一考試(A+B卷)題庫清單-帶答案(持續(xù)更新) 2023年華為OD真題機考題庫大全-帶答案(持續(xù)更新) 2. 面試題 一手真實java面試題:2023年各大公司java面試真題匯總--持續(xù)更新 3. 技術(shù)知識 java后端技術(shù)匯總 + 中間件 + 架構(gòu)思想 類型 難度 Spring、

    2024年02月13日
    瀏覽(27)
  • 第九篇:node靜態(tài)文件服務(wù)(中間件)

    第九篇:node靜態(tài)文件服務(wù)(中間件)

    ????江城開朗的豌豆 :個人主頁 ????個人專欄? :《 VUE 》?《 javaScript 》 ??? ?個人網(wǎng)站? :《 江城開朗的豌豆?? 》? ???生活的理想,就是為了理想的生活?! 當(dāng)今互聯(lián)網(wǎng)時代,Node.js 成為了最受歡迎的服務(wù)器端開發(fā)平臺之一。作為一名小白,學(xué)習(xí) Node.js 可能會讓你感

    2024年02月20日
    瀏覽(18)
  • 后端常使用的中間件知識點--持續(xù)更新

    類型 難度 mysql mysql中SQL優(yōu)化:多角度分析 包學(xué)包會,sql優(yōu)化全過程,刨根分析 redis 多角度剖析redis數(shù)據(jù)結(jié)構(gòu)及底層實現(xiàn)原理、應(yīng)用場景 MQ 簡單大體說明RabbitMQ的使用(簡單版) mybatis 使用JDBC的批量插入百萬數(shù)據(jù)要多少秒 一遍就會的,從0開始在springboot上使用Mybatis對數(shù)據(jù)庫進(jìn)

    2024年02月13日
    瀏覽(21)
  • 【node.js從入門到精通】使用express創(chuàng)建web服務(wù)器,路由,進(jìn)行中間件的創(chuàng)建鏈接路由及其他中間件

    【node.js從入門到精通】使用express創(chuàng)建web服務(wù)器,路由,進(jìn)行中間件的創(chuàng)建鏈接路由及其他中間件

    目錄 前言 初識express 使用express創(chuàng)建基本的web服務(wù)器 初識express路由 路由匹配概念 路由模塊化 中間件 中間件和路由的區(qū)別 定義中間件函數(shù) 中間件作用? ?局部生效中間價 中間件分類 ?1.應(yīng)用級別中間件 ?2.路由級別的中間件 ?3.錯誤級別中間件 ?4.內(nèi)置中間件 ?5.自定義中間

    2024年02月02日
    瀏覽(62)
  • Node.js 使用 cors 中間件解決跨域問題

    Node.js 使用 cors 中間件解決跨域問題

    cors 是 Express 的一個第三方中間件。通過安裝和配置 cors 中間件,可以很方便地解決跨域問題。 CORS (Cross-Origin Resource Sharing,跨域資源共享)由一系列 HTTP 響應(yīng)頭 組成, 這些 HTTP 響應(yīng)頭決定瀏覽器是否阻止前端 JS 代碼跨域獲取資源 。 瀏覽器的 同源安全策略 默認(rèn)會阻止網(wǎng)

    2024年01月20日
    瀏覽(61)
  • 【Node.js從基礎(chǔ)到高級運用】十三、NodeJS中間件高級應(yīng)用

    【Node.js從基礎(chǔ)到高級運用】十三、NodeJS中間件高級應(yīng)用

    在現(xiàn)代web開發(fā)中,Node.js因其高效和靈活性而備受青睞。其中,中間件的概念是構(gòu)建高效Node.js應(yīng)用的關(guān)鍵。在這篇博客文章中,我們將深入探討Node.js中間件的高級應(yīng)用,包括創(chuàng)建自定義中間件、使用第三方中間件等。我們將從基礎(chǔ)講起,逐步深入,旨在為讀者提供全面而深入

    2024年03月22日
    瀏覽(26)
  • 在Node.js中,什么是中間件(middleware)?它們的作用是什么?

    在Node.js中,什么是中間件(middleware)?它們的作用是什么?

    聚沙成塔·每天進(jìn)步一點點 前端入門之旅:探索Web開發(fā)的奇妙世界 歡迎來到前端入門之旅!感興趣的可以訂閱本專欄哦!這個專欄是為那些對Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一個系統(tǒng)而

    2024年02月06日
    瀏覽(29)
  • 后端 .net7 Minimal API 限流中間件(微信小程序無師自通十)

    ????????我的微信小程序使用.net7 Minimal API 作為后端,當(dāng)服務(wù)器擺上公網(wǎng)后,可以觀察到很多的攻擊行為和暴力訪問。所以,我需要使用微軟的限流中間件部署相應(yīng)的功能在服務(wù)器上 : AddFixedWindowLimiter using Microsoft.AspNetCore.RateLimiting; using System.Threading.RateLimiting; 后端

    2024年02月12日
    瀏覽(26)
  • 【中間件】消息中間件之Kafka

    一、概念介紹 Apache Kafka是一個分布式流處理平臺,用于構(gòu)建實時數(shù)據(jù)管道和流應(yīng)用。它可以處理網(wǎng)站、應(yīng)用或其他來源產(chǎn)生的大量數(shù)據(jù)流,并能實時地將這些數(shù)據(jù)流傳輸?shù)搅硪粋€系統(tǒng)或應(yīng)用中進(jìn)行處理。 核心概念: Topic(主題) :消息的分類,用于區(qū)分不同的業(yè)務(wù)消息。

    2024年01月20日
    瀏覽(42)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包