日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

SpringCloud微服務中如何實現多端認證?

來源: 責編: 時間:2024-03-18 09:34:36 256觀看
導讀概述DailyMart是一個ToC的在線購物商城,目前僅支持通過瀏覽器訪問。在商城中的所有操作都需要用戶先登錄。為了實現這一需求,我們可以采用以下技術方案:用戶通過SpringCloud Gateway訪問CustomerService進行登錄認證。認

概述

DailyMart是一個ToC的在線購物商城,目前僅支持通過瀏覽器訪問。在商城中的所有操作都需要用戶先登錄。為了實現這一需求,我們可以采用以下技術方案:xT928資訊網——每日最新資訊28at.com

  1. 用戶通過SpringCloud Gateway訪問CustomerService進行登錄認證。認證成功后,服務器返回一個JWT(JSON Web Token)。在接下來的操作中,用戶需要在請求頭中攜帶此Token。
  2. 在網關服務中,我們創建了一個名為ApiAuthenticatorFilter的過濾器。該過濾器用于驗證請求頭中是否包含Token,并檢查Token的有效性。如果請求頭中沒有攜帶Token,或者Token失效,則不允許訪問后端接口。

詳細交互流程如下圖1所示:xT928資訊網——每日最新資訊28at.com

圖1:PC認證流程圖1:PC認證流程xT928資訊網——每日最新資訊28at.com

多端認證需求

這種架構在初期可以滿足業務的發展需求。然而,隨著業務的擴展,我們需要考慮到現在大部分用戶使用手機進行購物的情況。因此,DailyMart也需要支持手機端訪問。但與瀏覽器不同,手機端的認證機制可能會有所不同。xT928資訊網——每日最新資訊28at.com

例如,瀏覽器端的Token有效期通常設定為1小時,而手機端的Token有效期通常設置為7天或更長。此外,瀏覽器端的Token采用JWT這種去中心化的認證機制,而手機端的Token采用中心化的認證機制,需要調用手機端服務進行登錄認證。xT928資訊網——每日最新資訊28at.com

同時,為了擴展業務,其他一些第三方應用可能也需要調用DailyMart的后端服務來獲取數據,對于第三方的應用一般采用appId + appSecret的方式進行認證,同時需要對接口參數進行簽名防止出現篡改和重放。(此方案在前文中有詳細說明,可以通過鏈接跳轉訪問查看。)xT928資訊網——每日最新資訊28at.com

現在的問題是,如何在原有架構的基礎上滿足這三種不同形式的認證需求呢?xT928資訊網——每日最新資訊28at.com

圖片圖片xT928資訊網——每日最新資訊28at.com

解決方案

要解決這個問題,最關鍵在于如何判斷請求的來源,是來自瀏覽器端的請求、手機端的請求還是第三方的請求?xT928資訊網——每日最新資訊28at.com

我們可以通過請求路徑進行區分,對于不同端的請求使用不同的路徑進行標識,可以做如下約定:xT928資訊網——每日最新資訊28at.com

  • 手機端請求,需要在請求路徑上帶有/ph/
  • 瀏覽器請求,需要在請求路徑上帶有/pd/
  • 第三方請求,需要在路徑請求上帶有/pt/
  • ...

最終規定接口的完整請求路徑為:/服務名/api/來源標識/接口路徑/,如:http://localhost:9090/customer-service/api/pd/customer/infoxT928資訊網——每日最新資訊28at.com

這樣在SpringCloud Gateway網關先獲取請求的路徑,再根據請求的路徑判斷請求來源,最后根據請求來源實現不同的認證方案。xT928資訊網——每日最新資訊28at.com

解決這個問題的關鍵在于如何判斷請求的來源,即是來自瀏覽器端、手機端還是第三方應用?xT928資訊網——每日最新資訊28at.com

我們可以通過請求路徑進行區分,對于不同端的請求使用不同的路徑進行標識。例如:xT928資訊網——每日最新資訊28at.com

  • 手機端請求,在請求路徑上帶有 /ph/
  • 瀏覽器端請求,在請求路徑上帶有 /pd/
  • 第三方請求,在請求路徑上帶有 /pt/
  • ...

最終,我們規定接口的完整請求路徑為:/服務名/api/來源標識/接口路徑/,例如:http://localhost:9090/customer-service/api/pd/customer/infoxT928資訊網——每日最新資訊28at.com

這樣,在SpringCloud Gateway網關中,我們需要創建一個過濾器,首先獲取請求的路徑,然后根據請求的路徑判斷請求來源,最后根據請求來源實現不同的認證方案。xT928資訊網——每日最新資訊28at.com

代碼實現

有了解決方案,我們就很容易完成代碼實現了。xT928資訊網——每日最新資訊28at.com

為了滿足多端認證的需求,在網關服務中我們可以抽取一個公共的認證接口ApiAuthenticator,具體的認證邏輯由具體實現類實現。xT928資訊網——每日最新資訊28at.com

圖片圖片xT928資訊網——每日最新資訊28at.com

在上面的類圖中,ProtectedApiAuthenticator用于實現第三方的認證邏輯,DefaultApiAuthenticator用于實現瀏覽器端的認證邏輯。xT928資訊網——每日最新資訊28at.com

在網關過濾器ApiAuthenticatorFilter中,我們首先根據請求路徑獲取請求來源,然后根據請求來源找到對應的實現類。xT928資訊網——每日最新資訊28at.com

@Component@Slf4jpublic class ApiAuthenticatorFilter implements GlobalFilter, Ordered {        @Override    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {        URI uri = exchange.getRequest().getURI();        String rawPath = uri.getRawPath();        // 靜態接口直接過濾        if (handleExcludeUrl(rawPath)) {            return chain.filter(exchange);        }              // 獲取認證邏輯        ApiAuthenticator apiAuthenticator = getApiAuthenticator(rawPath);        AuthenticatorResult authenticatorResult = apiAuthenticator.auth(exchange);                if (!authenticatorResult.isResult()) {            return Mono.error(new HttpServerErrorException(                    HttpStatus.METHOD_NOT_ALLOWED, authenticatorResult.getMessage()));        }                return chain.filter(exchange);            }                /**     * 確定認證策略     * @param rawPath 請求路徑     */    private ApiAuthenticator getApiAuthenticator(String rawPath) {        String[] parts = rawPath.split("/");        if (parts.length >= 4) {            String parameter = parts[3];            return switch (parameter) {                case PROTECT_PATH -> new ProtectedApiAuthenticator();                case PRIVATE_PATH -> new PrivateApiAuthenticator();                case PUBLIC_PATH -> new PublicApiAuthenticator();                case DEFAULT_PATH -> new DefaultApiAuthenticator();                default -> throw new IllegalStateException("Unexpected value: " + parameter);            };        }        return new DefaultApiAuthenticator();    } }

以下是瀏覽器端的認證邏輯,它會驗證JWT token的有效性。如果token失效,則直接返回錯誤提示給用戶,引導其重新登錄。xT928資訊網——每日最新資訊28at.com

@Component@Slf4jpublic class DefaultApiAuthenticator implements ApiAuthenticator {        @Override    public AuthenticatorResult auth(ServerWebExchange exchange) {        ServerHttpRequest request = exchange.getRequest();        HttpHeaders httpHeaders = request.getHeaders();                // 獲取JWT請求頭 Authorization        String token = httpHeaders.getFirst(HttpHeaders.AUTHORIZATION);                if (Objects.nonNull(token)) {            try {                String subjectFromJWT = JwtUtil.getSubjectFromJWT(token);                log.info("用戶請求token: {} , 身份Subject:{}", token, subjectFromJWT);                //重新設置請求頭                mutateNewHeader(exchange, subjectFromJWT);                return new AuthenticatorResult(true, "認證通過");            } catch (ParseException | JOSEException e) {                log.error("token解析失敗");                return new AuthenticatorResult(false, "Token錯誤,請重新登錄!");            }                    }                return new AuthenticatorResult(false, "Token為空,請重新登錄!");    }}

小結

本文提出了一種靈活、可擴展的方案,以滿足 DailyMart 在業務發展過程中的多端認證需求。通過使用請求路徑區分不同端的請求來源,并在 SpringCloud Gateway 網關中實現相應的過濾器進行認證,方案具有靈活性、可擴展性和可維護性。xT928資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-76482-0.htmlSpringCloud微服務中如何實現多端認證?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 終于明白為啥面試老是有人問 SubList 了,原來這玩意會 OOM!

下一篇: 寫了個簡單爬蟲,收集 Boss直聘自動駕駛崗位

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 天貓精靈Sound Pro體驗:智能音箱沒有音質?來聽聽我的

    這幾年除了手機作為智能生活終端最主要的核心之外,第二個可以成為中心點的產品是什么?——是智能音箱。 手機在執行命令的時候有兩種操作方式,手和智能語音助手,而智能音箱只
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業務的發展,組織規模的擴大,越來越多的企業開始意識到協作效率對于企業團隊的重要性,甚至是決定其在某個行業競爭中突圍的關鍵,是企業長久生存的根本。得物
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人&ldquo;珍藏&rdquo;是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • AI芯片初創公司Tenstorrent獲三星和現代1億美元投資

    Tenstorrent是一家由芯片行業資深人士Jim Keller領導的加拿大初創公司,專注于開發人工智能芯片,該公司周三表示,已經從現代汽車集團和三星投資基金等
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产亚洲一区二区三区在线观看| 在线观看精品| 亚洲欧洲综合另类| 国产欧美日韩一级| 欧美精品一区二区三区视频| 久久精品亚洲一区二区| 亚洲一区二区不卡免费| 国产精品老女人精品视频| 欧美精品在线观看91| 欧美大片在线观看一区| 玖玖精品视频| 久久久噜噜噜久久狠狠50岁| 久久久亚洲精品一区二区三区 | 欧美日韩在线播| 蜜臀av一级做a爰片久久| 久久久久国产精品厨房| 久久久噜噜噜久久| 久久精品人人爽| 久久精品国产久精国产一老狼 | 午夜精品剧场| 亚洲欧美日韩一区二区三区在线| 亚洲男人第一网站| 亚洲欧美综合网| 午夜在线成人av| 久久国产精彩视频| 久久av一区二区| 亚洲高清久久| 亚洲欧洲在线一区| 亚洲伦理在线| 亚洲视屏在线播放| 亚洲专区在线视频| 午夜精品久久久| 久久国内精品视频| 亚洲一区免费网站| 小嫩嫩精品导航| 久久精品欧美日韩| 久久综合福利| 欧美激情一区二区三区在线| 欧美日韩亚洲一区二区| 国产精品一区二区男女羞羞无遮挡 | 亚洲日本成人网| 亚洲国产cao| 亚洲精品中文字幕女同| 一区二区高清视频| 亚洲深夜av| 久久精品最新地址| 欧美大片免费久久精品三p| 欧美激情精品久久久久| 欧美日韩在线大尺度| 欧美午夜视频一区二区| 国产精品对白刺激久久久| 欧美xxx成人| 欧美亚州韩日在线看免费版国语版| 国产精品专区第二| 在线精品福利| 99re热精品| 香蕉成人久久| 久久亚洲欧美| 欧美日韩一区国产| 国产伪娘ts一区| 亚洲黄色免费电影| 亚洲一区二区精品在线观看| 欧美自拍丝袜亚洲| 欧美激情亚洲一区| 欧美高清影院| 国产精品一级久久久| 在线观看成人网| 亚洲天堂av在线免费| 国产视频一区在线| 亚洲区一区二区三区| 亚洲欧美视频在线观看视频| 美女福利精品视频| 国产精品美女久久久| 精品成人一区二区三区| 在线性视频日韩欧美| 久久久久国色av免费观看性色| 欧美日韩国产999| 欧美理论电影在线播放| 黄色资源网久久资源365| 一本色道久久综合亚洲精品高清 | 国产日韩精品在线观看| 亚洲欧洲日韩在线| 欧美一区二区三区啪啪 | 欧美激情1区| 欧美韩国日本一区| 国产亚洲欧美一区二区三区| 99精品福利视频| 久久婷婷av| 国产精品亚洲综合色区韩国| 亚洲美女色禁图| 日韩视频一区二区在线观看| 久久成人在线| 国产精品久久二区| 亚洲精品国产系列| 久久久久在线| 欧美成人免费全部观看天天性色| 国产精品色婷婷| 99精品热6080yy久久 | 欧美激情精品久久久久久变态| 国产婷婷色综合av蜜臀av| 一本大道av伊人久久综合| 校园春色综合网| 国产精品九九| 亚洲国产精品一区二区尤物区| 亚洲你懂的在线视频| 久久av最新网址| 欧美日本三区| 亚洲免费视频在线观看| 国产人妖伪娘一区91| 久久国产精品久久国产精品| 尤物yw午夜国产精品视频| 欧美肥婆在线| 亚洲午夜女主播在线直播| 国产毛片久久| 麻豆精品一区二区av白丝在线| 亚洲精品国产无天堂网2021| 欧美性猛交xxxx免费看久久久| 欧美一区二区三区日韩视频| 鲁大师影院一区二区三区| 母乳一区在线观看| 亚洲二区视频| 午夜亚洲性色福利视频| 久久久999国产| 欧美国产日韩xxxxx| 久久综合伊人| 久久久久九九九九| 午夜精品亚洲一区二区三区嫩草| 亚洲制服丝袜在线| 久久av一区| 欧美日本久久| 在线电影国产精品| 久久国产免费| 国产精品激情偷乱一区二区∴| 亚洲激情视频网站| 噜噜爱69成人精品| 韩国免费一区| 亚洲尤物在线| 麻豆精品精华液| 欧美日韩色婷婷| 亚洲高清视频一区| 免费在线观看日韩欧美| 国产精品国产三级国产专播精品人| 韩国成人福利片在线播放| 在线精品观看| 女人天堂亚洲aⅴ在线观看| 亚洲国产精品成人综合色在线婷婷| 精品动漫3d一区二区三区| 久久精品首页| 91久久久久久久久| 国产精品户外野外| 久久激情久久| 亚洲精品色图| 欧美少妇一区二区| 国产日韩欧美一区二区| 欧美一级电影久久| 一区二区三区亚洲| 国产精品久久久久久五月尺| 久久综合图片| 午夜老司机精品| 99re视频这里只有精品| 激情欧美一区二区三区在线观看| 国产精品盗摄久久久| 欧美成人一二三| 久久精品亚洲国产奇米99| 亚洲无人区一区| 亚洲国产综合在线| 国产一区二区三区精品久久久| 欧美日韩一区二区国产| 麻豆精品一区二区av白丝在线| 亚洲欧美日韩国产综合| 99热这里只有成人精品国产| 尤物99国产成人精品视频| 国产欧美欧美| 国产精品极品美女粉嫩高清在线| 欧美激情精品久久久久久黑人| 久久久999成人| 欧美一区二区免费视频| 亚洲一区二区精品在线观看| 日韩视频在线免费| 亚洲第一精品影视| 极品中文字幕一区| 国产一区二区三区在线观看免费| 国产精品欧美经典| 欧美日韩视频在线第一区| 欧美国产免费| 你懂的亚洲视频| 麻豆精品一区二区av白丝在线| 久久久人成影片一区二区三区 | 亚洲大片一区二区三区| 国内揄拍国内精品少妇国语| 国产欧美一区二区精品性| 国产精品久久久一区麻豆最新章节 | 在线观看福利一区| 黄色免费成人| 激情亚洲网站| 国内外成人免费激情在线视频| 国产日韩精品视频一区| 国产精品一区二区你懂得| 国产精品嫩草久久久久| 国产精品国产一区二区| 欧美视频在线观看免费网址| 欧美日韩三区| 国产精品xxx在线观看www| 欧美性猛交一区二区三区精品|