带你十天轻松搞定|带你十天轻松搞定 Go 微服务系列(七)
序言
我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:
- 环境搭建
- 服务拆分
- 用户服务
- 产品服务
- 订单服务
- 支付服务
- RPC 服务 Auth 验证(本文)
- 服务监控
- 链路追踪
- 分布式事务
完整示例代码: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 支持我们!微信交流群 【带你十天轻松搞定|带你十天轻松搞定 Go 微服务系列(七)】关注『微服务实践』公众号并点击 交流群 获取社区群二维码。
推荐阅读
- 数据结构|【初阶】带你看懂二叉树(附图解)
- Python|如何用python批量下载这些视频(只需 15 行代码,即可轻松实现)
- 开发工具|小马带你认识前端开发神器WebStorm(WebStorm及Git的相关配置与使用)
- 硬核调试实操 | 手把手带你实现 Serverless 断点调试
- 墨天轮访谈|墨天轮访谈 | 腾讯张铭(带你揭秘王者荣耀背后的游戏数据库 TcaplusDB)
- 如何保证同事的代码不会腐烂(一文带你了解 Alibaba COLA 架构)
- 百度BML基础技术合集|一图带你了解完飞桨架构、工具及其所有组件
- 一文吃透JVM,面试轻松拿offer
- 功能强大!带你走近Smartbi增强分析模块
- 一篇文章带你了解Python中的装饰器