前端真的能做到徹底權限控制嗎

HTML JSP Java 技術 行家匯 2018-12-03

權限控制大致分為兩個維度:

  • 垂直維度: 控制用戶可以訪問哪些url的權限
  • 水平維度: 控制用戶訪問特定url,獲取哪些數據的權限(e.g. 普通用戶、管理員、超級管理員訪問同一url,獲取的數據是不同的)

Web權限控制方案List

  • 前後端不分離:以Java為例,後端通過jsp、freemark、thmeleaf等模板來渲染相應權限的數據,渲染完呈現在瀏覽器端
  • 前後端分離:

①SPA單頁面應用,路由由前端控制,前端通過js控制hash路由的權限

②SSR服務端渲染,Node中間層做代理路由,判斷權限渲染特定的路由至瀏覽器端

SPA前端權限控制方案

SPA: 單頁Web應用(single page web application)將所有web活動侷限於一個html頁面中,利用js通過hash或者瀏覽器history api來實現無刷新路由跳轉,前後端通過ajax數據通信,避免了瀏覽器的刷新重新加載,為用戶提供流程的操作體驗。這意味著前端接管了路由層,需要通過調用前端自身的MVC模塊,來渲染不同的頁面。

1.登陸事件Login

// 觸發登陸事件

dispatch('login')

// actions

commit(types.LOGIN_SUCCESS, res.data.data)

2、獲取Token,經Base64編碼後存至sessionStorage

前端真的能做到徹底權限控制嗎

3.所有HTTP Header Authorization 加上編碼後的token(前後端可約定規則)

前端真的能做到徹底權限控制嗎

4.請求攔截:後臺拿到token後對每個請求進行校驗,若校驗失敗返回401,前端response鉤子裡統一catch error 跳轉至登陸頁面

前端真的能做到徹底權限控制嗎

5.路由跳轉攔截:任意路由跳轉時,在路由beforeEach鉤子裡校驗本地是否存在token,若沒有,則跳轉至登陸頁面

前端真的能做到徹底權限控制嗎

6.登出Logout:清楚本地sessionStorage的token信息

前端真的能做到徹底權限控制嗎

相關推薦

推薦中...