java - 前后端分离中后端提供的RESTFUL接口如何进行权限控制?
ringa_lee
ringa_lee 2017-04-18 10:09:00
0
7
603
ringa_lee
ringa_lee

ringa_lee

全部回覆 (7)
阿神

基於角色的權限控制不是個好辦法,具體可以看這篇文章:https://stormpath.com/blog/ne...

我的專案也是用的shiro,不是基於角色的,而是基於permission。簡單來說就是這樣的:

  1. 每個url、選單、按鈕都是一個resource,這個resource有對應的permission

  2. 角色擁有permission(若干)

  3. 判斷這個角色能不能獲得資源的方法很簡單,看這個角色有沒有對應資源permission就行了

  4. 在這裡只有permission是寫死的

    Peter_Zhu

    每一個後端的請求都需要進行驗證,比如說一個獲取用戶資訊列表的ajax請求,那麼會驗證當前的請求有沒有權限獲取啊,去獲取請求的cookie,在和伺服器上的session做個判斷,如果有權限就給他數據,如果沒有就回傳403之類的。

      巴扎黑

      一般會將资源URL统一管理起来,会提供管理平台维护权限,利用interceptor/filter校驗使用者是否有對應的權限。

      1. 你想從資料庫取得角色是為什麼呢?因為權限會改變?這種情況你必須將資源維護起來,或是想要實現動態權限就不可能。

      2. 權限較為簡單就像Tomcat Manager中的角色一樣,那直接使用硬編碼這也沒有什麼問題。

      最主要是需求要做成什麼樣子。

        刘奇

        我覺得你這是兩個問題。

        先防止介面被其他人調用,這個可以使用token的機制來做限制,沒有token或token不正確就回傳403。

        剩下的就是權限問題,用shiro和spring security等等都行,可以使用session來區分不同權限的使用者。

          阿神
          1. 服務端產生一個token回傳給客戶端,客戶端每次請求就帶著這個token,後端用filter統一處理;

          2. 如果能解決問題3,那問題2就沒意義了;

          3. 記憶中shiro是可以在程式碼層級控制權限的,就來看看文件吧。

            伊谢尔伦

            權限有多個粒度的,動作權限,資料權限,不同狀態條件下的權限,僅在某個層面上控制不了的,常見的RBAC,ACL都只能做到部分控制,還是要結合自身狀況,靈活應用,沒有包治百病的妙藥。

              洪涛

              你可以考慮用下Spring Security或是Shiro進行權限管理,具體操作可以上網查資料

                最新下載
                更多>
                網站特效
                網站源碼
                網站素材
                前端模板
                關於我們 免責聲明 Sitemap
                PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!