<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          帶你十天輕松搞定 Go 微服務系列(七)

          共 2122字,需瀏覽 5分鐘

           ·

          2022-02-26 15:31

          序言

          我們通過一個系列文章跟大家詳細展示一個 go-zero 微服務示例,整個系列分十篇文章,目錄結構如下:

          1. 環(huán)境搭建:帶你十天輕松搞定 Go 微服務系列(一)
          2. 服務拆分:帶你十天輕松搞定 Go 微服務系列(二)
          3. 用戶服務:帶你十天輕松搞定 Go 微服務系列(三)
          4. 產品服務:帶你十天輕松搞定 Go 微服務系列(四)
          5. 訂單服務:帶你十天輕松搞定 Go 微服務系列(五)
          6. 支付服務:帶你十天輕松搞定 Go 微服務系列(六)
          7. RPC 服務 Auth 驗證(本文)
          8. 服務監(jiān)控
          9. 鏈路追蹤
          10. 分布式事務

          期望通過本系列帶你在本機利用 Docker 環(huán)境利用 go-zero 快速開發(fā)一個商城系統(tǒng),讓你快速上手微服務。

          完整示例代碼:https://github.com/nivin-studio/go-zero-mall

          首先,我們來看一下整體的服務拆分圖:

          7 RPC服務 Auth 驗證

          在前面幾章我們已經分別實現(xiàn)了 user product order payrpc 服務和 api 服務。在 api 服務中我們使用 go-zero 框架自帶的 jwt 實現(xiàn)鑒權驗證。那么接下里我們就說說 rpc 服務的 auth 驗證。

          go-zero 框架 rpc 服務的 auth 驗證原理是,客戶端訪問 rpc 服務需要攜帶 App 標識以及 Token 值,rpc 服務會從指定的 Redis 服務中驗證 App 標識和 Token 值是否正確。所以客戶端的 App 標識,Token 值,是需要提前打入 Redis 服務中。

          7.1 開啟 rpc 服務 auth 驗證

          下面我們以 user rpc 服務,和 user api 服務為例,來開啟并使用 rpc 服務的 auth 驗證

          • 進入服務工作區(qū)
          $?cd?mall/service/user
          • 修改 user rpc user.yaml 配置文件
          $?vim?rpc/etc/user.yaml
          Name:?user.rpc
          ListenOn:?0.0.0.0:9000

          ...

          Auth:?true???????????????#?是否開啟?Auth?驗證
          StrictControl:?true??????#?是否開啟嚴格模式
          Redis:???????????????????#?指定?Redis?服務
          ??Key:?rpc:auth:user?????#?指定?Key?應為?hash?類型
          ??Host:?redis:6379
          ??Type:?node
          ??Pass:

          • 修改 user api user.yaml 配置文件
          $?vim?api/etc/user.yaml
          Name:?User
          Host:?0.0.0.0
          Port:?8000

          ...

          UserRpc:
          ??App:?userapi??????????????????????????#?App?標識
          ??Token:?6jKNZbEpYGeUMAifz10gOnmoty3TV??#?Token?值
          ??Etcd:
          ????Hosts:
          ????-?etcd:2379
          ????Key:?user.rpc
          • App 標識, Token 值寫入 Redis 服務

            App 標識作為 rpc 指定 keyhash keyToken 值作為 hash key 的值。

          • 重啟 user rpc 服務
          $?cd?mall/service/user/rpc
          $?go?run?user.go?-f?etc/user.yaml
          Starting?rpc?server?at?127.0.0.1:9000...
          • 重啟 user api 服務
          $?cd?mall/service/user/api
          $?go?run?user.go?-f?etc/user.yaml
          Starting?server?at?0.0.0.0:8000...

          7.2 調試 rpc 服務 auth 驗證

          訪問 user apilogin 接口,我們可以看到接口能正常的返回結果值。

          那么我們修改,user api user.yaml 配置文件中的 Token 值再次請求接口試試。

          提示:修改 yaml 配置文件需要重啟服務才有效

          我們可以從返回的結果中看出,rpc 服務報錯了,未經認證,拒絕訪問。

          大家可以自己再嘗試修改 user rpc user.yaml 配置文件中 StrictControlfalse 看看效果。

          項目地址

          https://github.com/zeromicro/go-zero

          歡迎使用 go-zerostar 支持我們!



          推薦閱讀


          福利

          我為大家整理了一份從入門到進階的Go學習資料禮包,包含學習建議:入門看什么,進階看什么。關注公眾號 「polarisxu」,回復?ebook?獲?。贿€可以回復「進群」,和數(shù)萬 Gopher 交流學習。

          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄片免费观看视频 | 免费在线观看岛国人成 | 青娱乐成年人视频 | 殴欧美1区2区精品裸体照片 | 婷婷五月天小说 |