准备工作
我们先做一些准备工作
1、导入 萤火商城 里面的数据库脚本,会得到一个包含所有需要的表,和初始化数据的数据库
2、下载前端项目 萤火商城V2.0-store端
安装依赖
yarn install
启动前端项目
yarn run serve
修改 public/config.js 文件里的 BASE_API 为 http://localhost:1880 (你本地node-red的地址)
登录
浏览器打开前端页面地址,输入用户名密码点击登录,会提示404错误:
Cannot POST /passport/login ……
回到node-red界面,在双击tab栏增加一个流程: 后台登录
增加两个节点
image.png
再登录发现接口不报错了,搞定……一半了
前端没拿到期望的返回结果……
看了下演示站的返回结果,需要登录的userId和对应的token
image.png
根据用户名查询
image.png
image.png
用户信息处理,演示数据只有一个店铺,这里的store_id先写死
image.png
jwt签名
先安装 node-red-contrib-jwt 节点
对接收到的msg.token属性进行签名,并保存到msg.payload属性
image.png
最后通过function节点调整返回前端的数据结构
msg.payload = {
token: msg.payload
}
return msg;
重新登陆下,登录部分ok了
jwt校验
登录后跳转到首页,需要 获取店铺信息: GET /store.user/info
因为后台的每个请求都会在header中携带 Access-Token,也就是上一步jwt生成的签名信息
所以这里把token解析作为子流程抽取出来
image.png
增加一个function节点,获取对应token
image.png
通过jwt verify节点解析 token
image.png
根据token解析出来的登录用户和店铺,判断是否有权限访问当前接口
另外把当前店铺的 store_id 放到 msg 中,方便下游节点直接访问
image.png
获取店铺信息的完整流程
image.png
完整流程
后台登录认证相关的完整流程
image.png