準(zhǔn)備工作
我們先做一些準(zhǔn)備工作
1衅檀、導(dǎo)入 螢火商城 里面的數(shù)據(jù)庫(kù)腳本,會(huì)得到一個(gè)包含所有需要的表霎俩,和初始化數(shù)據(jù)的數(shù)據(jù)庫(kù)
2哀军、下載前端項(xiàng)目 螢火商城V2.0-store端
安裝依賴(lài)
yarn install
啟動(dòng)前端項(xiàng)目
yarn run serve
修改 public/config.js 文件里的 BASE_API 為 http://localhost:1880 (你本地node-red的地址)
登錄
瀏覽器打開(kāi)前端頁(yè)面地址,輸入用戶(hù)名密碼點(diǎn)擊登錄打却,會(huì)提示404錯(cuò)誤:
Cannot POST /passport/login ……
回到node-red界面杉适,在雙擊tab欄增加一個(gè)流程: 后臺(tái)登錄
增加兩個(gè)節(jié)點(diǎn)
再登錄發(fā)現(xiàn)接口不報(bào)錯(cuò)了,搞定……一半了
前端沒(méi)拿到期望的返回結(jié)果……
看了下演示站的返回結(jié)果柳击,需要登錄的userId和對(duì)應(yīng)的token
根據(jù)用戶(hù)名查詢(xún)
用戶(hù)信息處理猿推,演示數(shù)據(jù)只有一個(gè)店鋪,這里的store_id先寫(xiě)死
jwt簽名
先安裝 node-red-contrib-jwt 節(jié)點(diǎn)
對(duì)接收到的msg.token屬性進(jìn)行簽名,并保存到msg.payload屬性
最后通過(guò)function節(jié)點(diǎn)調(diào)整返回前端的數(shù)據(jù)結(jié)構(gòu)
msg.payload = {
token: msg.payload
}
return msg;
重新登陸下蹬叭,登錄部分ok了
jwt校驗(yàn)
登錄后跳轉(zhuǎn)到首頁(yè)藕咏,需要 獲取店鋪信息: GET /store.user/info
因?yàn)楹笈_(tái)的每個(gè)請(qǐng)求都會(huì)在header中攜帶 Access-Token,也就是上一步j(luò)wt生成的簽名信息
所以這里把token解析作為子流程抽取出來(lái)
增加一個(gè)function節(jié)點(diǎn)秽五,獲取對(duì)應(yīng)token
通過(guò)jwt verify節(jié)點(diǎn)解析 token
根據(jù)token解析出來(lái)的登錄用戶(hù)和店鋪孽查,判斷是否有權(quán)限訪問(wèn)當(dāng)前接口
另外把當(dāng)前店鋪的 store_id 放到 msg 中,方便下游節(jié)點(diǎn)直接訪問(wèn)
獲取店鋪信息的完整流程
完整流程
后臺(tái)登錄認(rèn)證相關(guān)的完整流程