文章彙整

Magento2 擴充模組的ACL權限

Astral WebBy Astral Web 2 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  Magento2 擴充模組的ACL權限

過去我們已介紹了如何設定Magento後台使用者的權限,在原生的架構下,各模組依功能可細分控管項目,而在客製擴充功能時,勢必也會遇到權限控管需求,今天就跟各位一同來了解Magento的ACL實作方式。

首先,需要先了解Magento的ACL架構,是由使用者(User),角色(Role),與資源(Resource)所組成。透過指定角色擁有哪些資源,再將使用者納入角色,來建構使用者對資源的存取鏈。

因此要為新功能增加權限,第一步就是定義新的資源。

以範例模組AstralWeb_Acl為例,假設要新增對這個模組所屬資料的瀏覽權限 view。

如下編輯檔案 etc/acl.xml

清除快取後,就可以在後台角色編輯頁,看到自己新增的資源:

有了可存取的資源,再來就是實作存取的權限檢查點。

我們可以在後台的選單上加上限制,有權限的登入者才看得到該選單。

編輯檔案etc/adminhtml/menu.xml,針對選單項目的resource屬性,綁定對應的資源id。

那麼左方的客製選單是否顯示,就能被控管囉!

除了選單的顯示與否,還需要控制Contoller,避免使用者直接打網址存取無權限的頁面。

以上述選單網址 astralwebacl/view/index 來實作,只需在對應的Controller類別裡,如下複寫_isAllowed方法:

Controller/Adminhtml/View/Index.php

明確的定義出要確認的資源id權限,就可以限制使用者的網址存取了。

另外值得一提的是,Magento的權限還能進階控管到後台頁面的區塊唷!

在當前範例,我們將此頁面內容分成A與B兩區塊:

為了細分權限,另外新增資源view_a與view_b

etc/acl.xml

然後為各區塊加上屬性aclResource,併綁上對應的資源id:

view/adminhtml/layout/astralwebacl_view_index.xml

現在調整一下使用者的權限,只開放瀏覽B區塊:

則該管理者瀏覽時為如下畫面,就會只剩下B區塊:

最後,還有一個位置可以置入權限檢查,就是web API的端點。只需針對etc/webapi.xml裡定義的端點,綁定所屬資源即可。

以上就是根據官方文件,ACL實作上能管轄的範圍。

 

關於ACL的應用,最後有個重要的提醒:我們在開發自己的模組時,有時會以其他模組為基礎去擴充,而在程式取用其他模組功能時,也會受制於其他模組的權限。因此,編輯後台角色權限,不能以模組為切割單位,換句話說,當功能操作遇到權限不通時,不妨去檢查一下是否被具相依性的模組權限阻擋,這種情形也適用於原生模組。

希望今天的分享幫助大家更好地維護自己的Magento系統,我們下次見!

如果有您有更多疑問可以詢問我們,未來會撰寫更多電商網站相關文章,您想知道什麼嗎?歡迎在下方留言給我們。或追蹤我們的粉絲專頁IG,也別忘了訂閱電子報,就不錯過最新文章喔!

想學習更多Magento設定嗎?請見:Magento教學導覽

 000

推薦文章

Categories:
  Magento-2MagentoMagento後台管理

留下回應

你的電子郵件地址不會被公開.