1、学习课程

带你十天轻松搞定 Go 微服务系列(七、RPC 服务 Auth 验证)

今天是学习 go 微服务的第七天,我们继续接着昨天的步骤,进入服务工作区

$ cd mall/service/user

2、修改 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

3、修改 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

4、将 App 标识, Token 值写入 Redis 服务

App 标识作为 rpc 指定 key 的 hash key,Token 值作为 hash key 的值。
在这里插入图片描述

在这里插入图片描述

5、重启 user rpc 服务

注意在 golang 容器下运行

参考:Linux下部署go-zero,运行goctl model运行模板生成命令报错解决方法

$ cd mall/service/user/rpc
$ go run user.go -f etc/user.yaml

看到 Starting rpc server at 127.0.0.1:9000…就是启动成功了,如下图:
在这里插入图片描述

6、重启 user api 服务

注意在 golang 容器下运行

$ cd mall/service/user/api
$ go run user.go -f etc/user.yaml

看到 Starting server at 0.0.0.0:8000…就是重启成功了,如下图所示:

在这里插入图片描述

7、调试 rpc 服务 auth 验证

访问 user api 的 login 接口,我用的是 Postman,我们可以看到接口报错不能正常的返回结果值。

请添加图片描述

Unknown database 'mall'

没有 mall 数据库,见招拆招,我就用 Navicat 连接上主机,记得用 root 登录,admin 权限低,后面有些操作操作不了,如下图:
在这里插入图片描述
在里面新建了一个 mall 数据库,如下图:
在这里插入图片描述
再次访问 user api 的 login 接口,报错

Table 'mall.uers' doesn't exist

请添加图片描述
证明库中缺少 user 表,回顾前几天的步骤,也没有建 user 表的步骤,我就上项目的地址去看文档:
go-zero-mall,发现了建表的 sql 文件位置如下:
在这里插入图片描述
一一把表建好之后,重新访问 user api 的 login 接口,终于没有报错,接口返回用户不存在的信息
请添加图片描述
我接着访问 user api 的 register 接口,进行 user 的注册
请添加图片描述
注册完了之后,访问 user api 的 login 接口,成功输出用户的 accessToken 和 accessExpire
请添加图片描述

8、题外话

那么我们可以修改 user api user.yaml 配置文件中的 Token 值再次请求接口试试。

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

我们可以从返回的结果中看出,rpc 服务报错了,未经认证,拒绝访问。

大家可以自己再尝试修改 user rpc user.yaml 配置文件中 StrictControl 为 false 看看效果。

9、系列

学习笔记:带你十天轻松搞定 Go 微服务系列(一)- 环境搭建
学习笔记:带你十天轻松搞定 Go 微服务系列(二)- 服务拆分
学习笔记:带你十天轻松搞定 Go 微服务系列(三)- 用户服务
学习笔记:带你十天轻松搞定 Go 微服务系列(四)- 产品服务
学习笔记:带你十天轻松搞定 Go 微服务系列(五)- 订单服务
学习笔记:带你十天轻松搞定 Go 微服务系列(六)- 支付服务
学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证
学习笔记:带你十天轻松搞定 Go 微服务系列(八)- 服务监控
学习笔记:带你十天轻松搞定 Go 微服务系列(九)- 链路追踪
学习笔记:带你十天轻松搞定 Go 微服务系列大结局(十)- 分布式事务

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐