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

業(yè)務(wù)開發(fā)時(shí),接口不能對(duì)外暴露怎么辦?

這篇具有很好參考價(jià)值的文章主要介紹了業(yè)務(wù)開發(fā)時(shí),接口不能對(duì)外暴露怎么辦?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在業(yè)務(wù)開發(fā)的時(shí)候,經(jīng)常會(huì)遇到某一個(gè)接口不能對(duì)外暴露,只能內(nèi)網(wǎng)服務(wù)間調(diào)用的實(shí)際需求。面對(duì)這樣的情況,我們?cè)撊绾螌?shí)現(xiàn)呢?

今天,我們就來理一理這個(gè)問題,從幾個(gè)可行的方案中,挑選一個(gè)來實(shí)現(xiàn)。

推薦一個(gè)開源免費(fèi)的 Spring Boot 實(shí)戰(zhàn)項(xiàng)目:

https://github.com/javastacks/spring-boot-best-practice

1. 內(nèi)外網(wǎng)接口微服務(wù)隔離

將對(duì)外暴露的接口和對(duì)內(nèi)暴露的接口分別放到兩個(gè)微服務(wù)上,一個(gè)服務(wù)里所有的接口均對(duì)外暴露,另一個(gè)服務(wù)的接口只能內(nèi)網(wǎng)服務(wù)間調(diào)用。

該方案需要額外編寫一個(gè)只對(duì)內(nèi)部暴露接口的微服務(wù),將所有只能對(duì)內(nèi)暴露的業(yè)務(wù)接口聚合到這個(gè)微服務(wù)里,通過這個(gè)聚合的微服務(wù),分別去各個(gè)業(yè)務(wù)側(cè)獲取資源。

該方案,新增一個(gè)微服務(wù)做請(qǐng)求轉(zhuǎn)發(fā),增加了系統(tǒng)的復(fù)雜性,增大了調(diào)用耗時(shí)以及后期的維護(hù)成本。

2. 網(wǎng)關(guān) + redis 實(shí)現(xiàn)白名單機(jī)制

在 redis 里維護(hù)一套接口白名單列表,外部請(qǐng)求到達(dá)網(wǎng)關(guān)時(shí),從 redis 獲取接口白名單,在白名單內(nèi)的接口放行,反之拒絕掉。

該方案的好處是,對(duì)業(yè)務(wù)代碼零侵入,只需要維護(hù)好白名單列表即可;

不足之處在于,白名單的維護(hù)是一個(gè)持續(xù)性投入的工作,在很多公司,業(yè)務(wù)開發(fā)無法直接觸及到 redis,只能提工單申請(qǐng),增加了開發(fā)成本;另外,每次請(qǐng)求進(jìn)來,都需要判斷白名單,增加了系統(tǒng)響應(yīng)耗時(shí),考慮到正常情況下外部進(jìn)來的請(qǐng)求大部分都是在白名單內(nèi)的,只有極少數(shù)惡意請(qǐng)求才會(huì)被白名單機(jī)制所攔截,所以該方案的性價(jià)比很低。

3. 方案三 網(wǎng)關(guān) + AOP

相比于方案二對(duì)接口進(jìn)行白名單判斷而言,方案三是對(duì)請(qǐng)求來源進(jìn)行判斷,并將該判斷下沉到業(yè)務(wù)側(cè)。避免了網(wǎng)關(guān)側(cè)的邏輯判斷,從而提升系統(tǒng)響應(yīng)速度。

我們知道,外部進(jìn)來的請(qǐng)求一定會(huì)經(jīng)過網(wǎng)關(guān)再被分發(fā)到具體的業(yè)務(wù)側(cè),內(nèi)部服務(wù)間的調(diào)用是不用走外部網(wǎng)關(guān)的(走 k8s 的 service)。

根據(jù)這個(gè)特點(diǎn),我們可以對(duì)所有經(jīng)過網(wǎng)關(guān)的請(qǐng)求的header里添加一個(gè)字段,業(yè)務(wù)側(cè)接口收到請(qǐng)求后,判斷header里是否有該字段,如果有,則說明該請(qǐng)求來自外部,沒有,則屬于內(nèi)部服務(wù)的調(diào)用,再根據(jù)該接口是否屬于內(nèi)部接口來決定是否放行該請(qǐng)求。

該方案將內(nèi)外網(wǎng)訪問權(quán)限的處理分布到各個(gè)業(yè)務(wù)側(cè)進(jìn)行,消除了由網(wǎng)關(guān)來處理的系統(tǒng)性瓶頸;同時(shí),開發(fā)者可以在業(yè)務(wù)側(cè)直接確定接口的內(nèi)外網(wǎng)訪問權(quán)限,提升開發(fā)效率的同時(shí),增加了代碼的可讀性。

當(dāng)然該方案會(huì)對(duì)業(yè)務(wù)代碼有一定的侵入性,不過可以通過注解的形式,最大限度的降低這種侵入性。

業(yè)務(wù)開發(fā)時(shí),接口不能對(duì)外暴露怎么辦?

具體實(shí)操

下面就方案三,進(jìn)行具體的代碼演示。

首先在網(wǎng)關(guān)側(cè),需要對(duì)進(jìn)來的請(qǐng)求header添加外網(wǎng)標(biāo)識(shí)符: from=public

@Component
public class AuthFilter implements GlobalFilter, Ordered {
    @Override
    public Mono < Void > filter ( ServerWebExchange exchange, GatewayFilterChain chain ) {
         return chain.filter(
         exchange.mutate().request(
         exchange.getRequest().mutate().header("id", "").header("from", "public").build())
         .build()
         );
    }
 
    @Override
    public int getOrder () {
        return 0;
    }
 }

接著,編寫內(nèi)外網(wǎng)訪問權(quán)限判斷的AOP和注解

@Aspect
@Component
@Slf4j
public class OnlyIntranetAccessAspect {
 @Pointcut ( "@within(org.openmmlab.platform.common.annotation.OnlyIntranetAccess)" )
 public void onlyIntranetAccessOnClass () {}
 @Pointcut ( "@annotation(org.openmmlab.platform.common.annotation.OnlyIntranetAccess)" )
 public void onlyIntranetAccessOnMethed () {
 }
 
 @Before ( value = "onlyIntranetAccessOnMethed() || onlyIntranetAccessOnClass()" )
 public void before () {
     HttpServletRequest hsr = (( ServletRequestAttributes ) RequestContextHolder.getRequestAttributes()) .getRequest ();
     String from = hsr.getHeader ( "from" );
     if ( !StringUtils.isEmpty( from ) && "public".equals ( from )) {
        log.error ( "This api is only allowed invoked by intranet source" );
        throw new MMException ( ReturnEnum.C_NETWORK_INTERNET_ACCESS_NOT_ALLOWED_ERROR);
            }
     }
 }
 
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OnlyIntranetAccess {
}

最后,在只能內(nèi)網(wǎng)訪問的接口上加上@OnlyIntranetAccess注解即可

@GetMapping ( "/role/add" )
@OnlyIntranetAccess
public String onlyIntranetAccess() {
    return "該接口只允許內(nèi)部服務(wù)調(diào)用";
}

你學(xué)會(huì)了嗎?

版權(quán)聲明:本文為CSDN博主「肥肥技術(shù)宅」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/m0_71777195/article/details/127243452

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協(xié)程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優(yōu)雅的方式!!

5.《Java開發(fā)手冊(cè)(嵩山版)》最新發(fā)布,速速下載!

覺得不錯(cuò),別忘了隨手點(diǎn)贊+轉(zhuǎn)發(fā)哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-655504.html

到了這里,關(guān)于業(yè)務(wù)開發(fā)時(shí),接口不能對(duì)外暴露怎么辦?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ?路由器端口映射怎么設(shè)置?內(nèi)網(wǎng)IP不能映射怎么辦??

    ?路由器端口映射怎么設(shè)置?內(nèi)網(wǎng)IP不能映射怎么辦??

    使用路由器后,Internet用戶無法訪問到局域網(wǎng)內(nèi)的主機(jī),因此不能訪問內(nèi)網(wǎng)搭建的Web、FTP、Mail等服務(wù)器。路由器 端口映射功能可以實(shí)現(xiàn)將內(nèi)網(wǎng)的服務(wù)器映射到Internet,從而實(shí)現(xiàn)服務(wù)器對(duì)外開放。 建議在設(shè)置路由器端口映射之前,確認(rèn)以下幾點(diǎn): 1.服務(wù)器:服務(wù)器設(shè)置為固定

    2024年02月09日
    瀏覽(20)
  • 無線網(wǎng)感嘆號(hào)不能上網(wǎng)怎么辦

    1、首先拔掉無線路由器的電源,等待一分鐘之后,再次開通電源,重啟無線路由器,之后再看看無線網(wǎng)絡(luò)是否可用,如果可用,則說明可能是路由器內(nèi)部的小程序錯(cuò)誤,通常這種情況很少發(fā)生。 2、檢查“貓”跟“路由器”的連接是否完好,這個(gè)很重要,路由器開著,但是這

    2024年02月06日
    瀏覽(24)
  • 【已解決】PPT不能轉(zhuǎn)換成PDF文檔怎么辦?

    【已解決】PPT不能轉(zhuǎn)換成PDF文檔怎么辦?

    PPT可以轉(zhuǎn)換成PDF文檔,只需要點(diǎn)擊PPT菜單頁面中的【文件】選項(xiàng),再點(diǎn)擊【導(dǎo)出】即可轉(zhuǎn)換,如果轉(zhuǎn)換時(shí)發(fā)現(xiàn)【導(dǎo)出】選項(xiàng)不可選,無法完成轉(zhuǎn)換怎么辦?以下3種方法可以試試! 出現(xiàn)上面這種情況,我們可以看下PPT是否正處于“只讀模式”,也就是PPT設(shè)置了限制保護(hù),在打

    2024年02月06日
    瀏覽(25)
  • 路由器設(shè)置好了但不能上網(wǎng)怎么辦?

    不少初次使用路由器上網(wǎng)的朋友經(jīng)常會(huì)遇到路由器設(shè)置好了上不了網(wǎng)的情況,出現(xiàn)這種情況很多朋友就沒轍,不知道怎么辦了。下面小編為大家介紹下遇到路由器設(shè)置好了上不了網(wǎng)的排除故障方法,相信會(huì)對(duì)你有所幫助。 路由器設(shè)置好了上不了網(wǎng)怎么辦 請(qǐng)分別從以下幾個(gè)方

    2024年02月05日
    瀏覽(17)
  • u盤被占用不能安全彈出怎么辦?里面的文件怎么取出來

    u盤被占用不能安全彈出怎么辦?里面的文件怎么取出來

    當(dāng)我們需要將u盤從電腦中安全彈出時(shí),有時(shí)會(huì)遇到u盤被占用的情況,導(dǎo)致無法安全地彈出u盤,這時(shí)我們?cè)撊绾翁幚砟兀?第一部分:u盤被占用不能安全彈出怎么解決 u盤被占用不能安全彈出來里面的文件會(huì)丟失嗎?當(dāng)u盤被占用而不能安全彈出時(shí),可能會(huì)出現(xiàn)數(shù)據(jù)損壞或丟失

    2023年04月12日
    瀏覽(13)
  • 藍(lán)牙bluesoleil 不能與該設(shè)備建立連接該怎么辦?

    藍(lán)牙設(shè)備無法正常連接,而且它是不需要配對(duì)密碼的,可還是出現(xiàn)無法連接,并“藍(lán)牙bluesoleil 不能與該設(shè)備建立連接,請(qǐng)確認(rèn)其電源開啟且已設(shè)置為可發(fā)現(xiàn)模式”,現(xiàn)在來解說如何解決這個(gè)問題 1、首先,單擊右下角藍(lán)牙圖標(biāo),注意,此時(shí),它是藍(lán)色的,然后再單擊“顯示經(jīng)

    2024年02月07日
    瀏覽(29)
  • 【解決方法】PPT不能編輯,按鈕都是灰色,怎么辦?

    【解決方法】PPT不能編輯,按鈕都是灰色,怎么辦?

    PPT文件打開之后,發(fā)現(xiàn)無法編輯,再仔細(xì)查看發(fā)現(xiàn)工具欄中的功能按鈕都是灰色的,無法使用,這是什么原因?該如何解決? 原因:無法編輯PPT文件,并且功能按鈕都是灰色,這是因?yàn)槲募O(shè)置了編輯權(quán)限導(dǎo)致的。 而想要取消修改權(quán)限,我們需要打開文件時(shí)輸入權(quán)限密碼,

    2024年01月25日
    瀏覽(72)
  • 電腦只能登錄微信?但卻打不開網(wǎng)頁?不能上網(wǎng)怎么辦?ip地址和DNS出問題了無法上網(wǎng)怎么辦?

    電腦只能登錄微信?但卻打不開網(wǎng)頁?不能上網(wǎng)怎么辦?ip地址和DNS出問題了無法上網(wǎng)怎么辦?

    描述一下問題: 昨天使用了一些代理梯子。直接關(guān)機(jī),沒有關(guān)閉那個(gè)軟件、今天打開電腦就出問題了。只能登錄微信!但卻打不開網(wǎng)頁! 今天查了很多資料都沒有解決?;?個(gè)多小時(shí)。終于可以上網(wǎng)了! 找到【控制面板】 --【網(wǎng)絡(luò)和Internet】-- 里面的【網(wǎng)絡(luò)連接】或者【網(wǎng)

    2024年02月05日
    瀏覽(161)
  • 華為E3276s-150 4G網(wǎng)卡不能用該怎么辦?

    同事有一個(gè)電信的4G網(wǎng)卡,我看他平常在單位用用速度不錯(cuò),自己也去買了華為的E3276s-150的4G上網(wǎng)卡,但是買來后發(fā)現(xiàn)用不了,后來有個(gè)朋友幫忙看了后,終于將問題解決了?,F(xiàn)將經(jīng)驗(yàn)分享給大家。 故障現(xiàn)象 1?、上網(wǎng)卡插上后沒有4G信號(hào)和客戶端顯示,但是周圍同事用的其他

    2024年02月08日
    瀏覽(16)
  • Win10中Pro/E鼠標(biāo)滾輪不能縮放該怎么辦?

    Win10中Pro/E鼠標(biāo)滾輪不能縮放該怎么辦?

    Pro/E安裝好后,鼠標(biāo)滾輪不能縮放模型,該怎么辦?問題多發(fā)生在win8/win10上,新裝了PROE,發(fā)現(xiàn)滑動(dòng)鼠標(biāo)中鍵不能放大縮小。 彩虹圖紙管理軟件_圖紙管理系統(tǒng)_圖紙文檔管理軟件系統(tǒng)_彩虹EDM【官網(wǎng)】 彩虹EDM圖紙管理軟件系統(tǒng),由南寧市二零二五科技有限公司 自主研發(fā)。為用戶

    2024年02月08日
    瀏覽(100)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包