学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)

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 的值。
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

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...就是启动成功了,如下图:
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

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...就是重启成功了,如下图所示:
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

7、调试 rpc 服务 auth 验证 访问 user api 的 login 接口,我用的是 Postman,我们可以看到接口报错不能正常的返回结果值。
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

Unknown database 'mall'

没有 mall 数据库,见招拆招,我就用 Navicat 连接上主机,记得用 root 登录,admin 权限低,后面有些操作操作不了,如下图:
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

在里面新建了一个 mall 数据库,如下图:
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

再次访问 user api 的 login 接口,报错
Table 'mall.uers' doesn't exist

学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

证明库中缺少 user 表,回顾前几天的步骤,也没有建 user 表的步骤,我就上项目的地址去看文档:
go-zero-mall,发现了建表的 sql 文件位置如下:
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

一一把表建好之后,重新访问 user api 的 login 接口,终于没有报错,接口返回用户不存在的信息
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

我接着访问 user api 的 register 接口,进行 user 的注册
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

注册完了之后,访问 user api 的 login 接口,成功输出用户的 accessToken 和 accessExpire
学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)
文章图片

8、题外话 那么我们可以修改 user api user.yaml 配置文件中的 Token 值再次请求接口试试。
提示:修改 yaml 配置文件需要重启服务才有效
我们可以从返回的结果中看出,rpc 服务报错了,未经认证,拒绝访问。
【学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)】大家可以自己再尝试修改 user rpc user.yaml 配置文件中 StrictControl 为 false 看看效果。

    推荐阅读