乐趣区

关于golang:带你十天轻松搞定-Go-微服务系列七

序言

咱们通过一个系列文章跟大家具体展现一个 go-zero 微服务示例,整个系列分十篇文章,目录构造如下:

  1. 环境搭建
  2. 服务拆分
  3. 用户服务
  4. 产品服务
  5. 订单服务
  6. 领取服务
  7. RPC 服务 Auth 验证(本文)
  8. 服务监控
  9. 链路追踪
  10. 分布式事务

冀望通过本系列带你在本机利用 Docker 环境利用 go-zero 疾速开发一个商城零碎,让你疾速上手微服务。

残缺示例代码:https://github.com/nivin-studio/go-zero-mall

首先,咱们来看一下整体的服务拆分图:

7 RPC 服务 Auth 验证

在后面几章咱们曾经别离实现了 user product order payrpc 服务和 api 服务。在 api 服务中咱们应用 go-zero 框架自带的 jwt 实现鉴权验证。那么接下里咱们就说说 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 验证

  • 进入服务工作区
$ 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 反对咱们!

微信交换群

关注『微服务实际 』公众号并点击 交换群 获取社区群二维码。

退出移动版