我正在構建一個複雜的網頁,它有許多用戶/組/權限,用戶可以根據ACL(使用Symfony2和Symfony2 ACL)查看全部/部分/沒有特定類型的對象。 。AngularJs的服務器端渲染模板
我現在正在處理的是,我不想在前端顯示每個UI元素,並且如果用戶做了他沒有權限的操作,就會拋出403錯誤。用戶沒有權限看到的隱藏元素對UX來說會更好。
這就好像我爲用戶顯示產品信息頁面,如果用戶沒有權限在此產品或所有產品上執行此操作,我不想顯示編輯/刪除按鈕(類別範圍權限)。
隨着Twig和服務器端渲染模板就會很容易如添加一堆權限檢查的模板
{% if is_granted('EDIT', product) %}
<button>Edit product</buttom>
{% endif %}
但如何與AngularJs處理這個在客戶方?
我想是這樣的:
創建服務嫩枝模板渲染服務器端的AngularJs控制器方法。這需要的
id
識別物體,這對用戶必須按順序對權限的參數看到編輯/刪除在模板呈現按鈕(Twig和is_granted()
處理此服務器側)用戶詢問以查看特定產品
/product/1
。路由器templateUrl
將爲/templates/product/view.html?object_id=1
,其中object_id
標識對象,在將模板服務器端渲染爲授予或拒絕呈現UI元素時應使用該對象。- 產品JSON然後取出並放入模板,它已經被渲染服務器端,並具有一定的角
{{ }}
等待產品數據被加入到。
是否有任何類似的情況下解決了使用您熟悉的其他服務器端技術,可以作爲示例引導我邁向成功之路?
我需要檢查用戶對特定對象的特定操作權限(VIEW/CREATE/EDIT/DELETE)。在每個對象上進行API調用檢查都不會有效,我認爲。 – nn4n4s
您是否可以擴展API,以便每次前端請求時都將ACL與數據一起發送?然後你需要一些解碼該acl數據的服務,但是在UI上它仍然是一個如果每個動作。 –
@ nn4n4s你不應該發送那些loged用戶不能'VIEW'的數據如果有一些從它計算出來的聚合值,在後端做。最終用戶可以打F12,訪問開發工具,並查看**整個**網絡流量。所以根本不要發送這樣的數據。 –