<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                Magento web API 區分三種不同的用戶類型: > **Guest**: 能夠訪問 `anonymous` 資源 ```xml <resources> <resource ref="anonymous" /> </resources> ``` > **Customer**: 能夠訪問 `self` 類型的資源 ```xml <resources> <resource ref="self"/> </resources> ``` > **Integrator: **能夠訪問 `acl.xml` 中定義好的特定資源 ```xml <resources> <resource ref="Magento_Cms::save"" /> </resources> ``` <br />為了更好的理解上面的內容,我們需要理解 `<VendorName>/<ModuleName>/acl.xml` 和 `<VendorName>/<ModuleName>/webapi.xml` 的關聯關系,我們在 `acl.xml` 中定義對應的資源訪問權限,下面的內容是 <MAGENTO_DIR>/module-cms/etc/acl.xml 中的代碼: ```xml <config> <acl> <resources> <resource id="Magento_Backend::admin"> <resource id="Magento_Backend::content"> <resource id="Magento_Backend::content_elements"> <resource id="Magento_Cms::page" title="Pages"> <resource id="Magento_Cms::save" title="Save Page"/> </resource> </resource> </resource> </resource> </resources> </acl> </config> ``` 我們重點關注這里的 `Magento_Cms::save` 資源,Magento 將單個 `acl.xml` 文件合并成一個大的 ACL 樹形結構,我們能在 Magento 后臺的兩個地方看到這個樹形結構: > - Role Resource tab of the System | Permissions | User Roles | Edit | Add New Role screen > - The API tab of the System | Extensions | Integrations | Edit | Add New Integration screen: <br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/1260804/1594944046775-94b5fa66-5c32-40d9-affd-85d4b0e5aa7d.png#align=left&display=inline&height=454&margin=%5Bobject%20Object%5D&name=image.png&originHeight=584&originWidth=541&size=148450&status=done&style=none&width=421)<br />在這兩個地方我們可以為管理員和特殊的 web API 集成用戶設定訪問權限。這并不是說標準的管理員沒法執行 WEB API,在鑒權類型的章節部分我們能看到他們的差別還是很明顯的。<br /> <br />這些資源自給并不做任何事情,僅僅在 `acl.xml` 文件中定義他們并不會使 CMS 頁面受到保護。 這里需要控制器介入,作為訪問控制的一種機制。搜索 `Magento_Cms::save` 字符能看到在 `Magento\Cms\Controller\Adminhtml\Page\Edit` 類中定義了 `const ADMIN_RESOURCE = 'Magento_Cms::save'` 。<br /> <br /> 常量 `ADMIN_RESOURCE` 的定義是在基類 `\Magento\Backend\App\AbstractAction` 中定義的,默認是 `const ADMIN_RESOURCE = 'Magento_Backend::admin'` ,該值在 `_isAllowed` 中的使用情況如下: ```xml protected function _isAllowed() { return $this->_authorization->isAllowed(static::ADMIN_RESOURCE); } ``` 這里的 `AbstractAction` 類是 Magento 中其他很多 admin 控制器的基類,這也意味著控制器才是真正利用 `acl.xml` 文件中定義的資源的類。`acl.xml` 文件的主要目的是創建 ACL 樹形結構。這意味著任何一個人如果要訪問后臺的 `cms/page/edit` ,它必須擁有 `Magento_Cms::save` 的訪問權限。否則,`_isAllowed` 方法在讀取到 `ADMIN_RESOURCE` 后會返回 `false` 并拒絕對應 URL 的訪問。<br /> <br />對于 Web APIs,它不適用控制器,也就沒有對應的 `ADMIN_RESOURCE` 常量和 `_isAllowed` 方法,API 使用 `webapi.xml` 類定義 `routes` ,一起來看看 `<MAGENTO_DIR>/module-cms/etc/webapi.xml` 文件中 CMS 頁面保存相關的部分: ```xml <routes> <route url="/V1/cmsPage" method="POST"> <service class="Magento\Cms\Api\PageRepositoryInterface" method="save"/> <resources> <resource ref="Magento_Cms::page"/> </resources> </route> <route url="/V1/cmsPage/:id" method="PUT"> <service class="Magento\Cms\Api\PageRepositoryInterface" method="save"/> <resources> <resource ref="Magento_Cms::page"/> </resources> </route> </routes> ``` 上面的路由定義將下面的幾部分綁定在了一起,`url` 和 `method` 參數指定了那個 URL 會觸發這個 `route` ,`service` 元素中的 `class` 和 `method` 參數指定了當路由被觸發時要執行的接口和方法。最后 `resource` 標簽中的 `ref` 指定了要執行的安全性檢查針對的是哪一個資源。如果一個用戶執行一個未經授權的 web API 請求,或者它不是一個擁有 `Magento_Cms::page` 資源的角色,對應的請求就不會執行到上面指定的方法。 customer 類型的用戶適合使用 widgets,Magento 的結算頁面就是一個很好的例子。整個結算就是一個完全使用 Ajax 的應用,這和普通的前臺界面比如 CMS、分類和產品頁面不同。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看