
Magento 2 の管理者用 ACL パネルは、認証システムと、アクセスコントロールリストルール (ACL) を作成するための堅牢なシステムを使用しています。これにより、ストアオーナーはシステム内の各ユーザーにきめ細かい役割を持たせることができます。この記事では、ACL の仕組みと、カスタムモジュールに ACL を追加する方法について説明します。
関連トピック:Magento 2: 最も重要な機能
目次
1.Magento 2 アクセスコントロールリストのルール
Magento 2 Admin ACL リソースは、Magento 2 admin の 「System > Permissions > User Roles」エリアに表示されます。「Add New Role」ボタンをクリックするか、ロールにアクセスすると、以下のようなページが表示されます。
このリソースタブには、システムで利用可能なすべてのリソースのツリーリストが表示されます。このロールのために、すべてのリソースまたは一部のリソースを選択し、「ロール・ユーザー」タブでこのロールのユーザーを選択することができます。このロールに所属するすべてのユーザーは、選択したリソースへのアクセスが制限されます。他のリソースは見ることもアクセスすることもできません。
関連トピック:Magento 2のデータ移行の簡素化
2.管理者用ACLを作成するには
ステップ1: ACLルールを作成します。
ステップ 2: Magentoのキャッシュをフラッシュします。
ステップ 3: ACLルールを確認します。
2.1.ステップ1: ACLルールの作成
ここでは、ACLロールにモジュールを追加する方法を説明します。ここでは、以前のシンプルなモジュールHelloWorldを使用します。Admin Menu and System Configuration の記事では、モジュールを作成するときには必ず resource 属性を持つことを説明しました。ここでは、リソースをシステムに登録して、マジェント がリソースにロールを設定できるようにします。リソースを登録するには、「app/code/{namespace}/{module}/etc/acl.xml」 にある 「acl.xml」 ファイルを使用します。このファイルをシンプルなモジュール用に作成してみましょう。
ファイル:app/code/Mageplaza/HelloWorld/etc/acl.xml
コンテンツは以下になります。
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Mageplaza_HelloWorld::helloworld" title="Hello World" sortOrder="51">
<resource id="Mageplaza_HelloWorld::post" title="Posts" sortOrder="10"/>
<resource id="Mageplaza_HelloWorld::helloworld_configuration" title="Configuration" sortOrder="99" />
</resource>
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Mageplaza_HelloWorld::helloworld_config" title="Hello World"/>
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
リソースは Magento_Backend::admin の子として配置されます。各リソースには、「Id」、「title」、「sortOrder」 属性があります。
- Id 属性は、このリソースの識別情報です。管理メニューや設定でリソースを定義したり、モジュールコントローラへのアクセスを制限する際に使用できます。これはユニークな文字列で、以下のフォーマットでなければなりません。Vendor_ModuleName::resource_name.
- Title属性は、リソースツリーで表示される際のリソースのラベルです。
- sortOrder属性は、ツリー内でのこのリソースの位置を定義します。
この作業が終わったら、キャッシュを更新して、リソースツリーの結果を確認してください。

2.2.ステップ2:マジェントのキャッシュをフラッシュ
Magento 2 の管理画面で管理メニューが表示されていることを確認したら、Magento 2 のキャッシュをフラッシュしてみましょう。
2.3.ステップ3: ACLルールの確認
アクセスを制限するために、ACLリソースを設置する場所があります。
管理者メニュー。管理メニュー:ACLリソースを設定して、ストアオーナーが許可していないメニューを非表示にします。
ファイル:app/code/Mageplaza/HelloWorld/etc/adminhtml/menu.xml
<add id="Mageplaza_HelloWorld::helloworld" title="Hello World" module="Mageplaza_HelloWorld" sortOrder="51" resource="Mageplaza_HelloWorld::helloworld"/>
システム設定:ACLリソースを置いて、このセクションページへのアクセスを制限します。
ファイル:app/code/Mageplaza/HelloWorld/etc/adminhtml/system.xml
<section id="helloworld" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1">
….
<resource>Mageplaza_HelloWorld::helloworld_configuration</resource>
….
</section>
Magento2でMageplaza_HelloWorld :: helloworld_configurationを使用しますSystem.xml構成を作成する方法 リソースを使用すると、コントローラーでも使用されます。 管理コントローラーの場合:Magentoは、特定のACLに対して現在ログインしているユーザーを検証するために使用できる抽象型Magento \ Framework \ AuthorizationInterfaceを提供します。 変数$ this-> _ authorizationを使用して、そのオブジェクトを呼び出すことができます。 コントローラでは、リソースをチェックするために保護された関数を作成する必要があります。 例:ファイル:vendor / magento / module-customer / Controller / Adminhtml / Index.php
protected function _isAllowed()
{
return $this->_authorization->isAllowed('Magento_Customer::manage');
}