序言
咱们通过一个系列文章跟大家具体展现一个 go-zero 微服务示例,整个系列分十篇文章,目录构造如下:
- 环境搭建
- 服务拆分
- 用户服务
- 产品服务
- 订单服务
- 领取服务
- RPC 服务 Auth 验证(本文)
- 服务监控
- 链路追踪
- 分布式事务
冀望通过本系列带你在本机利用 Docker 环境利用 go-zero 疾速开发一个商城零碎,让你疾速上手微服务。
残缺示例代码:https://github.com/nivin-studio/go-zero-mall
首先,咱们来看一下整体的服务拆分图:
7 RPC 服务 Auth 验证
在后面几章咱们曾经别离实现了 user
product
order
pay
的 rpc
服务和 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
指定key
的hash key
,Token
值作为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 api
的 login
接口,咱们能够看到接口能失常的返回后果值。
那么咱们批改,user api
user.yaml 配置文件中的 Token
值再次申请接口试试。
提醒:批改 yaml 配置文件须要重启服务才无效
咱们能够从返回的后果中看出,rpc
服务报错了,未经认证,回绝拜访。
大家能够本人再尝试批改 user rpc
user.yaml 配置文件中 StrictControl
为 false
看看成果。
我的项目地址
https://github.com/zeromicro/go-zero
欢送应用 go-zero
并 star 反对咱们!
微信交换群
关注『微服务实际 』公众号并点击 交换群 获取社区群二维码。