Spring Boot + Vue 前后端分离开发,权限管理的一点思路
在傳統(tǒng)的前后端不分的開發(fā)中,權(quán)限管理主要通過(guò)過(guò)濾器或者攔截器來(lái)進(jìn)行(權(quán)限管理框架本身也是通過(guò)過(guò)濾器來(lái)實(shí)現(xiàn)功能),如果用戶不具備某一個(gè)角色或者某一個(gè)權(quán)限,則無(wú)法訪問(wèn)某一個(gè)頁(yè)面。
但是在前后端分離中,頁(yè)面的跳轉(zhuǎn)統(tǒng)統(tǒng)交給前端去做,后端只提供數(shù)據(jù),這種時(shí)候,權(quán)限管理不能再按照之前的思路來(lái)。
首先要明確一點(diǎn),前端是展示給用戶看的,所有的菜單顯示或者隱藏目的不是為了實(shí)現(xiàn)權(quán)限管理,而是為了給用戶一個(gè)良好的體驗(yàn),不能依靠前端隱藏控件來(lái)實(shí)現(xiàn)權(quán)限管理,即數(shù)據(jù)安全不能依靠前端。
這點(diǎn)就像普通的表單提交一樣,前端做數(shù)據(jù)校驗(yàn)是為了提高效率,提高用戶體驗(yàn),后端才是真正的確保數(shù)據(jù)完整性。
所以,真正的數(shù)據(jù)安全管理是在后端實(shí)現(xiàn)的,后端在接口設(shè)計(jì)的過(guò)程中,就要確保每一個(gè)接口都是在滿足某種權(quán)限的基礎(chǔ)上才能訪問(wèn),也就是說(shuō),不怕將后端數(shù)據(jù)接口地址暴露出來(lái),即使暴露出來(lái),只要你沒(méi)有相應(yīng)的角色,也是訪問(wèn)不了的。
前端為了良好的用戶體驗(yàn),需要將用戶不能訪問(wèn)的接口或者菜單隱藏起來(lái)。
有人說(shuō),如果用戶直接在地址攔輸入某一個(gè)頁(yè)面的路徑,怎么辦?此時(shí),如果沒(méi)有做任何額外的處理的話,用戶確實(shí)可以通過(guò)直接輸入某一個(gè)路徑進(jìn)入到系統(tǒng)中的某一個(gè)頁(yè)面中,但是,不用擔(dān)心數(shù)據(jù)泄露問(wèn)題,因?yàn)闆](méi)有相關(guān)的角色,就無(wú)法訪問(wèn)相關(guān)的接口。
但是,如果用戶非這樣操作,進(jìn)入到一個(gè)空白的頁(yè)面,用戶體驗(yàn)不好,此時(shí),我們可以使用 Vue 中的前置路由導(dǎo)航守衛(wèi),來(lái)監(jiān)聽(tīng)頁(yè)面跳轉(zhuǎn),如果用戶想要去一個(gè)未獲授權(quán)的頁(yè)面,則直接在前置路由導(dǎo)航守衛(wèi)中將之?dāng)r截下來(lái),重定向到登錄頁(yè),或者直接就停留在當(dāng)前頁(yè),不讓用戶跳轉(zhuǎn),也可以順手再給用戶一點(diǎn)點(diǎn)未獲授權(quán)的提示信息。
總而言之一句話,前端的所有操作,都是為了提高用戶體驗(yàn),不是為了數(shù)據(jù)安全,真正的權(quán)限校驗(yàn)要在后端來(lái)做,后端如果是 SSM 架構(gòu),建議使用 Shiro ,如果是 Spring Boot + 微服務(wù),建議使用 Spring Security 。
關(guān)注公眾號(hào)牧碼小子,專注于 Spring Boot+微服務(wù),定期視頻教程分享,關(guān)注后回復(fù) Java ,領(lǐng)取松哥為你精心準(zhǔn)備的 Java 干貨!
轉(zhuǎn)載于:https://juejin.im/post/5ce5eec6e51d4510a5033529
總結(jié)
以上是生活随笔為你收集整理的Spring Boot + Vue 前后端分离开发,权限管理的一点思路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vue-router 在项目中的使用
- 下一篇: Vue.js 入门指南之“前传”(含su