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 微服务系列大结局(十)- 分布式事务
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。