1. 程式人生 > >前端的許可權控制

前端的許可權控制

1.為什麼做前端許可權控制?
    
    如果僅從技術實現的角度講,確實只在後端做控制就足夠了,但在實際專案中,前端許可權控制也有其不可或缺的作用,主要體現為三點:
    
        (1)提升突破許可權的門檻
        
                前端許可權控制是系統安全的排頭兵,雖然不是主力,但起碼手動輸 url、控制檯發請求、開發者工具改資料這種級別的入侵可以防範掉
        
        (2)過濾越權請求,減輕服務端壓力
        
                為了省錢,不該發的請求乾脆就讓他發不出去,頻寬都是錢買的
                
        (3)提升使用者體驗
        
                從使用者體驗角度出發,一個設計優良的系統理應根據許可權為每個使用者展現特定的內容,避免在介面上給使用者帶來困擾。
                
2.前端許可權控制具體指什麼?

    (1)路由方面:使用者登入後只能看到自己有權訪問的導航選單,也只能訪問自己有權訪問的路由地址,否則將跳轉 4xx 提示頁;

    (2)檢視方面:使用者只能看到自己有權瀏覽的內容和有權操作的控制元件;

    (3)最後再加上請求控制作為最後一道防線,路由可能配置失誤,按鈕可能忘了加許可權,這種時候請求控制可以用來兜底,越權請求將在前端被攔截。

3.怎麼做前端許可權控制?
        
    (1)知道使用者擁有哪些許可權,所以使用者登入後第一件事是獲取許可權資料。許可權資料至少應該包括路由許可權和資源許可權。
    
            *路由許可權顧名思義,就是使用者可訪問的路由集合,以此作為設定前端路由和生成導航選單的依據;
            
            *資源許可權是使用者可訪問的資源集合,資源可以簡單理解成使用者能夠發起的所有請求集合,以此作為檢視控制和請求攔截的依據。
            
    
    (2)分別-實現對路由、檢視、請求的控制。
        
            路由控制首先要實現動態選單,這樣就可以對常規訪問方式進行限制;對於非常規訪問方式比如手動修改 url,可以從前端路由處著手做控制。
            路由控制的思路:
                            *初始化即掛載全部路由,每次路由跳轉前做校驗
                            *單獨做一個登入頁,登入後帶著使用者憑據跳轉到前端應用
                            *先初始化一個只有登入路由的應用,使用者登入後動態新增路由,當然這需要框架提供支援
                            
            檢視控制需要實現一個可以在檢視層呼叫的許可權驗證方法,輸入使用者期望的許可權,輸出是否擁有該許可權,將呼叫這個方法的結果,作為介面上需要驗證許可權的控制元件或元素顯示與否的依據。
            
            請求控制實際上就是為你使用的 HTTP 庫實現一個請求攔截器,對將要發起的請求與使用者資源許可權進行匹配,攔截越權請求。
            值得一提的是對於攜帶引數的 url,需要先進行模式約定,比如/people/1這個 url 可以在許可權中描述為/people/**,那麼攔截器中就要先將這種 url 處理成約定後的格式,然後再進行許可權驗證。