日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring gateway 鉴权_通过spring实现service变成controller,代码得到了简化

發(fā)布時間:2023/12/10 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring gateway 鉴权_通过spring实现service变成controller,代码得到了简化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在網(wǎng)上發(fā)現(xiàn)了一個牛X的思路,在做restful的時候,如果業(yè)務(wù)改變,需要每次都修改controller,后來方便了,直接透傳的方式,其實(shí)也比較麻煩,每次都要寫controller。需求變了接口也發(fā)生了改變,長期這樣的結(jié)果,就是維護(hù)成本越來越高,直接service 通過spring 讓他變成controller不就少寫很多代碼了。源碼:https://github.com/limingios/netFuture/tree/master/api網(wǎng)關(guān)/idig8-api-gateway

背景

移動互聯(lián)時代,都在追尋一個萬能的解,其實(shí)這個解可能不存在。其實(shí)后端開發(fā)的挑戰(zhàn)越來越多。里面很多個controller,如果系統(tǒng)越來越龐大,導(dǎo)致的結(jié)果維護(hù)困難。

什么是API網(wǎng)關(guān)

API網(wǎng)關(guān)是一個輕量的java http 接口組件,可無縫將普通的 Serive 方法轉(zhuǎn)換成 http 接口。并從已下幾點(diǎn)來達(dá)到提高開發(fā)效率與接口質(zhì)量的目的。

  • 去掉mvc控制器,將http請求直接無縫接入JAVA服務(wù)接口
  • 統(tǒng)一出入?yún)⒏袷?/li>
  • 統(tǒng)一異常規(guī)范
  • 自動檢測服務(wù)接口規(guī)
  • 負(fù)責(zé)路由協(xié)議的轉(zhuǎn)換
    • 普通的http接口
    • API網(wǎng)關(guān)接口的實(shí)現(xiàn)

    當(dāng)初一個接口開發(fā)一個控制器,1000個接口開發(fā)1000個控制器。一個一個封裝參數(shù),質(zhì)量也提高了統(tǒng)一規(guī)范,出問題統(tǒng)一的方式回饋。不規(guī)范的代碼也會被api網(wǎng)關(guān)攔截掉。

    代碼講解

    就5個類,不到500行代碼。開發(fā)的人最喜歡又小又精湛的代碼,不容易軟。方便理解,方便使用,又粗又大的代碼,很不方便遷移,不好控制容易軟。

    1.ApiGatewayHandler.java

    轉(zhuǎn)換器和調(diào)用加載器

    2.ApiGatewayServlet.java

    類似springboot的一個入口類

    3.APIMapping.java

    注解暴露類

    4.ApiRequest.java

    請求封裝類

    5.ApiStore.java

    API IOC 大倉庫

    代碼的方式流程圖

    • 請求參數(shù)說明:

    名稱類型描述methodstring方法名稱paramterjson業(yè)務(wù)參數(shù)timestamplong請求時間戳

    • 實(shí)現(xiàn)技術(shù):
  • java servlet
  • spring Ioc
  • Json 轉(zhuǎn)換工具的使用
  • 接口安全的業(yè)務(wù)需求

    • 接口安全級別分組
  • 黑名單組
  • 我的,賬戶信息

  • 白名單組
  • 商品展示,商品列表

    3.黑白名單組

    商品詳情內(nèi)的展示,已登錄和未登錄之間的區(qū)別

    • 基于Token安全機(jī)制認(rèn)證要求
  • 登錄鑒權(quán)
  • 防止業(yè)務(wù)參數(shù)串改
  • fiddler抓包工具。可以實(shí)現(xiàn)。

  • 保護(hù)用戶敏感信息
  • 用戶Id,在網(wǎng)絡(luò)上是不進(jìn)行傳輸?shù)?#xff0c;都是用token來代替

  • 防簽名偽造
  • 客戶端和服務(wù)端都有一套token和Secret的,傳輸?shù)臅r候不是用secret傳輸,是的簽名

    • Token 認(rèn)證機(jī)制整體架構(gòu)

    整體架構(gòu)分為Token生成與認(rèn)證兩部分:

  • Token生成指在登陸成功之后生成 Token 和密鑰,并其與用戶隱私信息、客戶端信息一起存儲至Token表,同時返回Token 與Secret 至客戶端。
  • Token認(rèn)證指客戶端請求業(yè)務(wù)接口時,認(rèn)證中心基于Token生成簽名。
    • Token表結(jié)構(gòu)說明:

    其實(shí)如果token加入索引的話,查詢也比較快,但是相對于redis來說肯定是沒有redis快的。

    • 業(yè)務(wù)請求具體參數(shù):

    簽名規(guī)則:

  • 已指定順序拼接字符串 secret+method+param+token+timestamp+secret
  • 使用MD5進(jìn)行加密,在轉(zhuǎn)化成大寫
  • 簽名的目的:

  • 防串改
  • 防偽造
  • 防重復(fù)使用簽名
  • 服務(wù)端簽名驗(yàn)證的具體流程:

    簽名認(rèn)證與API網(wǎng)關(guān)的整體認(rèn)證流程

    PS:主要是了解思路,對于性能我建議先別考慮,先實(shí)現(xiàn)之后才能談性能問題,性能問題沒有絕對的只有相對的。最主要是簽名的獲取生成的思路。源碼在github上。

    看到這里,點(diǎn)了關(guān)注吧!

    總結(jié)

    以上是生活随笔為你收集整理的spring gateway 鉴权_通过spring实现service变成controller,代码得到了简化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。