Spring Boot + Vue 先後端分離開發,權限管理的一點思路前端
在傳統的先後端不分的開發中,權限管理主要經過過濾器或者攔截器來進行(權限管理框架自己也是經過過濾器來實現功能),若是用戶不具有某一個角色或者某一個權限,則沒法訪問某一個頁面。後端
可是在先後端分離中,頁面的跳轉通通交給前端去作,後端只提供數據,這種時候,權限管理不能再按照以前的思路來。安全
首先要明確一點,前端是展現給用戶看的,全部的菜單顯示或者隱藏目的不是爲了實現權限管理,而是爲了給用戶一個良好的體驗,不能依靠前端隱藏控件來實現權限管理,即數據安全不能依靠前端。架構
這點就像普通的表單提交同樣,前端作數據校驗是爲了提升效率,提升用戶體驗,後端纔是真正的確保數據完整性。框架
因此,真正的數據安全管理是在後端實現的,後端在接口設計的過程當中,就要確保每個接口都是在知足某種權限的基礎上才能訪問,也就是說,不怕將後端數據接口地址暴露出來,即便暴露出來,只要你沒有相應的角色,也是訪問不了的。前後端分離
前端爲了良好的用戶體驗,須要將用戶不能訪問的接口或者菜單隱藏起來。微服務
有人說,若是用戶直接在地址攔輸入某一個頁面的路徑,怎麼辦?此時,若是沒有作任何額外的處理的話,用戶確實能夠經過直接輸入某一個路徑進入到系統中的某一個頁面中,可是,不用擔憂數據泄露問題,由於沒有相關的角色,就沒法訪問相關的接口。設計
可是,若是用戶非這樣操做,進入到一個空白的頁面,用戶體驗很差,此時,咱們能夠使用 Vue 中的前置路由導航守衛,來監聽頁面跳轉,若是用戶想要去一個未獲受權的頁面,則直接在前置路由導航守衛中將之攔截下來,重定向到登陸頁,或者直接就停留在當前頁,不讓用戶跳轉,也能夠順手再給用戶一點點未獲受權的提示信息。接口
總而言之一句話,前端的全部操做,都是爲了提升用戶體驗,不是爲了數據安全,真正的權限校驗要在後端來作,後端若是是 SSM 架構,建議使用 Shiro ,若是是 Spring Boot + 微服務,建議使用 Spring Security 。路由