我在Magento2中创建了一个自定义REST API。但是,如何使用内置的Magento2 REST api安全保护它?
就像使用授权标题保护/index.php/rest/V1/customers/me一样
答案 0 :(得分:1)
在 webapi.xml 中创建自定义api配置时放置ref="self"
如果您这样配置,您可以使用magento 2提供的身份验证访问API,如oauth,token,oauth2
在magento
的管理面板中禁用api匿名访问权限答案 1 :(得分:1)
通过
应用自定义API的访问安全性<强> 强>
Magento 2允许未经身份验证的(匿名)用户访问某些Web API。要阻止对匿名用户的访问,请定义调用者必须具有访问权限的资源。喜欢,
<route url="/V1/techyrules/webservice/deleteAddressMine" method="PUT">
<service class="techyrules\WebService\Api\AddressManagementInterface" method="deleteAddressMine"/>
<resources>
<resource ref="self"/>
</resources>
</route>
ref,有效值为self,anonymous或Magento资源,例如Magento_Customer :: group。
自我示例, 用户通过用户名&amp ;;验证他/她自己密码然后将生成令牌以响应该令牌充当进一步处理的自身权限。
答案 2 :(得分:0)
将<resource ref="anonymous"/>
替换为模块的<resource ref="Venodr_Module::name_of_the_acl_entry"/>
中的etc/webapi.xml
:
<route url="/V1/customers/me" method="...">
<service class="..." method="..."/>
<resources>
<resource ref="Vendor_Module::name_of_the_acl_entry"/>
<!--<resource ref="anonymous"/>-->
</resources>
</route>
并在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="Vendor_Module::name_of_the_acl_entry" title="Human readable title"/>
</resources>
</acl>
</config>
然后在&#34; 系统/权限/用户角色&#34;中为具体后端用户授予访问权限,选择角色,选项卡&#34; 角色资源&#34;和&#34; 资源访问&#34;。选择&#34; 全部&#34;或选择&#34; 自定义&#34;并检查名为&#34;人类可读标题&#34;。
的资源