鍍金池/ 問答/HTML5  HTML/ 前后端分離項目,你們是怎么控制權限的?

前后端分離項目,你們是怎么控制權限的?

已經做前后端分離 快一年了
技術棧趨向成熟

  • vue
  • vue router
  • vuex
  • node
  • express

做出來的是單頁面應用,但是在權限上一直都有問題。
現(xiàn)在我做權限 是 后臺有一套,前端又有重復的一套,麻煩就在這里,

  • 只有我對后臺有請求的時候,我才知道用戶到底有沒有這個權限「因為前臺的權限,就存在 localSorage 里面,用戶可以更改」,如果請求發(fā)現(xiàn)沒權限,還是前端 router 跳到沒權限或者登錄頁,但是如果這個頁面沒有請求呢。
  • 因為是一個管理系統(tǒng),權限特別細,比如某些用戶只有這幾個目錄可以看,其他用戶只有那幾個目錄可以看,但我用的是前端路由,問題又來了。

    • 前端路由一般都是配置好的,我怎么讓用戶一進來就跳到他自己有權限的頁面的第一頁。
    • 如果用戶直接輸入 一個沒有權限進入的地址 我該怎么攔截「須知我的攔截其實沒有意義,因為頁面都在他那里,他只需要改掉我的攔截代碼就行」

這里 我現(xiàn)在的解決方案是

  • 還是后臺傳給我 詳細的權限,用于我鋪設頁面,如果這個沒有權限,導航上也是沒有顯示的,但是這樣還是可以被更改。
  • 第二個 用戶登錄 就會跳他能看到頁面的第一個。

    • 首先 路由上 是全部都注冊好的
    • 請求之后拿到權限,然后根據(jù)權限 生成導航數(shù)組
    • 然后自動頁面跳到導航數(shù)組的 第一個
    • 切換頁面的時候,都要去根據(jù)導航數(shù)組判斷他是否有這個頁面權限。

但是我覺得自己的辦法太笨拙,而且還是會被篡改,所以求各位解答疑惑,謝謝了。

回答
編輯回答
離殤

vue路由有meta字段,可以用來存儲可訪問此路由的角色,但是這樣的話,你的菜單需要根據(jù)路由動態(tài)生成而不是寫死在頁面上。

2017年10月8日 20:48
編輯回答
帥到炸

從后端拿到當前用戶能訪問的頁面菜單配置,或跟權限相關的操作,可先進行查詢等,
也有做一些示例:https://github.com/meibin08/ ,可以參考一下,

2017年4月26日 21:12
編輯回答
晚風眠

前后端分離,不是完全分離?你沒有自己的node服務器,再去轉接后臺請求,session在哪里做的,正常權限數(shù)據(jù)應該放在session里的。

2017年9月16日 22:12
編輯回答
有你在

前端不建議擁有權限控制,因為是不可靠的。。

2017年12月1日 18:37
編輯回答
逗婦乳

可以看看這個,前后端分離權限問題解決樣板https://github.com/lenve/vhr

2017年12月1日 02:45
編輯回答
枕邊人

同意@小翼做法是對的,你說的手動修改了有什么關系,就算用戶能通過一些方式進入到本來進入不了的頁面,當在那個頁面想要獲取到一些數(shù)據(jù)或者一些操作還是要通過這個token值,而這個token值用戶是破解不了的,他只是單純的進入了一個空頁面而已頁面

2018年3月17日 16:35
編輯回答
假灑脫

完整的前端權限控制可以參考這個項目:https://github.com/tower1229/...

2017年10月23日 16:27
編輯回答
巷尾

我做的項目也是有這個問題, 因為我這里的權限控制非常細, 細到每一步操作都要判斷是否可以進行, 于是我和后端這樣約定.

查操作, 前端不進行鑒權, 后端根據(jù)用戶的權限, 如果有數(shù)據(jù)則返回數(shù)據(jù), 沒有數(shù)據(jù)就返回空
增刪改操作, 前端統(tǒng)一在組件內自動 fetch 相關資源的 action, 然后根據(jù)后端返回是否有權限, 來決定組件的行為

2018年6月23日 04:08
編輯回答
柒喵

我覺得樓主的問題應該是不存在的。
后端做了權限控制,無權看到的內容就不會返回了,即使你請求了這個接口。

前端也控制了權限,無權訪問的頁面,導航中就不會顯示了,如果用戶自己在前端修改了前端的數(shù)據(jù),或者跳過你給的導航,直接通過url訪問對應的頁面,也應該不會有什么大問題,因為即使他能在前端訪問到那個頁面,但每個頁面都有對應的內容(數(shù)據(jù)),顯示內容的時候是需要請求后端的,后端沒有權限,打開頁面也只能是空白。

你只要后端做好了權限控制,前端無論怎么改也應該是不能獲取到自己沒有權限的內容的。

從數(shù)據(jù)安全的角度來說,前端可以完全不使用權限控制;如果你那里做不到這點的話,那么,你后端的權限控制肯定是有問題的。

前端的權限控制只是為了給用戶更好的體檢;并不是真的拿來控制權限的。

2018年9月14日 17:06
編輯回答
好難瘦

控制全部交給后臺處理。
第一次登錄的時候,使用用戶信息生成token返回給客戶端。
token的安全性由后臺處理,前端拿到的數(shù)據(jù)都認為是正確的,不對權限做控制。
前端每次請求后臺接口,都將token帶入。由后臺驗證token的正確性,并且返回相應的結果。
用標準的restful api就可以了。

2018年2月1日 12:13