天天看點

12.前後端分離開發,權限管理的一點思路

在傳統的前後端不分的開發中,權限管理主要是通過過濾器或者攔截器來進行(權限管理架構本身也是通過過濾器來實作功能),如果使用者不具備某一個角色或者某一個權限,則無法通路某一個頁面。

但是在前後端分離中,頁面的跳轉交給前端去做,後端隻提供資料,這種時候,權限管理不能再按照之前的思路來,首先要明确一點,前端是展示給使用者看的,所有的菜單顯示或者隐藏目的不是為了實作權限管理,而是為了給使用者一個良好的體驗,不能依靠前端隐藏控件來實作權限管理。即資料安全不能依靠前端。

這點就像普通的表單送出一樣,前端做資料校驗是為了提高效率,提高使用者體驗,後端才是真正的確定資料完整性

是以,真正的資料安全管理是在後端實作的,後端在接口設計的過程中,就要確定每個接口都是在滿足某種權限的基礎上才能通路,也就是說,不怕将後端資料接口位址暴露出來,隻要你沒有相應的角色,也是通路不了的。

前端是為了良好的使用者體驗,需要将使用者不能通路的接口或者菜單隐藏起來。

有人說,如果使用者直接在位址欄輸入某一個頁面的路徑,怎麼辦?此時如果沒有做任何額外的處理的話,使用者确實可以通過直接輸入某一個路徑進入到系統的某一個頁面中,但是,不用擔心資料洩露問題,因為沒有相關的角色,就無法通路相關的接口。

但是,如果使用者非這樣操作,進入到一個空白的頁面,使用者體驗不好,此時,我們可以使用 Vue 中的前置路由導航守衛,來監聽頁面跳轉,如果使用者想要去一個未獲授權的頁面,則直接在前置路由導航守衛中将之攔截下來,重定向到登入頁,或者直接就停留在目前頁,不讓使用者跳轉,也可以順手再給使用者一點點未獲授權的提示資訊。

總而言之一句話,前端的所有操作,都是為了提高使用者體驗,不是為了資料安全,真正的權限校驗要在後端來做,後端如果是 SSM 架構,建議使用 Shiro ,如果是 Spring Boot + 微服務,建議使用 Spring Security 。