学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 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 的值。
文章图片
文章图片
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 服务报错了,未经认证,拒绝访问。
【学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证)】大家可以自己再尝试修改 user rpc user.yaml 配置文件中 StrictControl 为 false 看看效果。
推荐阅读
- Docker|Docker 笔记 - 使用 docker 镜像快速创建一个 mysql 实例
- 一篇文章带你了解Java|一篇文章带你了解Java SpringBoot Nacos
- Windows原理深入学习系列-特权
- 图解机器学习算法 | 从入门到精通系列教程
- 图解机器学习 | 降维算法详解
- 图解机器学习|图解机器学习 | 降维算法详解
- Android开发笔记|笔记1-Android简介
- 前端WEB学习|JavaScript框架有哪些(JS框架汇总)
- Python学习之装饰器与类的装饰器详解
- 学习笔记|TCP原理和三次握手和四次挥手过程