1 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
正在用laravel jwt和vue寫項(xiàng)目在,說(shuō)下我的想法:
首先,前后端一定要有個(gè)約定,即返回的數(shù)據(jù)格式及如何處理錯(cuò)誤。比如我們返回的json的數(shù)據(jù)格式(高級(jí)點(diǎn)還有http status響應(yīng)機(jī)制)
{
"code": 0, // 0代表成功,1失敗,2未登錄....
"msg": "修改成功!"
"data":[]
}
前端每次請(qǐng)求路由之前做個(gè)響應(yīng)(vue對(duì)應(yīng)的是router.beforeEach方法,這里我不太了解react,但是你查下肯定有這個(gè)方法),先判斷本地是否有存儲(chǔ)用戶的登錄信息,無(wú)則直接返回登錄頁(yè)面(or其它業(yè)務(wù)頁(yè)面),有則進(jìn)行你的其它操作,這里已經(jīng)回答第二個(gè)問(wèn)題了,至于你說(shuō)的部分頁(yè)面才需要用戶登錄,也很簡(jiǎn)單,只需要對(duì)路由進(jìn)行分組處理
登錄之后,將后端返回的信息包裝存儲(chǔ)本地,比如token及用戶信息,以備下次調(diào)用
這里回到你的第一個(gè)問(wèn)題,當(dāng)用戶請(qǐng)求通過(guò)路由前的判斷,也就是前端認(rèn)為用戶已登錄用token去請(qǐng)求后端api的時(shí)候,后端返回token過(guò)期或者錯(cuò)誤的時(shí)候怎么處理?這個(gè)時(shí)候返回的數(shù)據(jù)code=2,那么我們只需要在統(tǒng)一請(qǐng)求后端api接口的地方做個(gè)響應(yīng),當(dāng)code=2,清空本地存儲(chǔ)的用戶數(shù)據(jù),前端路由到登錄頁(yè)即可,這里不該后端去重定向了
第三個(gè)問(wèn)題不好回答,安全是相對(duì)的,這個(gè)方式已經(jīng)很安全了。設(shè)計(jì)的符合用戶習(xí)慣,業(yè)務(wù)邏輯無(wú)問(wèn)題就是我的目標(biāo)
你的標(biāo)題貌似有問(wèn)題,token的合法性是后端去判斷的,應(yīng)該問(wèn)前端如何根據(jù)后端對(duì)token驗(yàn)證的結(jié)果做出響應(yīng)
添加回答
舉報(bào)