Moodle 2.9.1 - 任何Web服务功能都提供“访问控制异常”

时间:2015-07-17 18:17:57

标签: web-services rest moodle

根据各种指南,我设法完成以下任务:

  • 使用REST API设置外部服务,其中包含“core_user_create_users”功能,
  • 设置用户帐户并将其分配为允许使用我设置的REST API服务
  • 为Web服务用户定义了一个角色,原型“经过身份验证的用户”,“系统”的上下文,
  • 设置角色以允许“moodle / user:create”和
  • 为没有过期的Web服务用户手动生成令牌。

现在,当我转到内置的Web服务测试客户端时,选择在REST API上使用基于令牌的身份验证,选择“moodle_user_create_users”函数并输入令牌和详细信息,我得到:

REST protocol: moodle_user_create_users
URL: [...]
'<?xml version="1.0" encoding="UTF-8" ?>
<EXCEPTION class="webservice_access_exception">
<ERRORCODE>accessexception</ERRORCODE>
<MESSAGE>Access control exception</MESSAGE>
<DEBUGINFO>Access to the function moodle_user_create_users() is not allowed.
There could be multiple reasons for this:
1. The service linked to the user token does not contain the function.
2. The service is user-restricted and the user is not listed.
3. The service is IP-restricted and the user IP is not listed.
4. The service is time-restricted and the time has expired.
5. The token is time-restricted and the time has expired.
6. The service requires a specific capability which the user does not have.
7. The function is called with username/password (no user token is sent)
and none of the services has the function to allow the user.
These settings can be found in Administration &gt; Site administration
&gt; Plugins &gt; Web services &gt; External services and Manage tokens.</DEBUGINFO>
</EXCEPTION>

我错过了什么?

4 个答案:

答案 0 :(得分:1)

我也有同样的例外。然后我在管理仪表板中进行了此更改。

网站管理 -> 移动应用 -> 移动设置 -> 为移动设备启用网络服务。

打开这个。

这就是我解决问题的人。

答案 1 :(得分:0)

我的回答似乎与其他人的经历相同:Web服务测试客户端无可救药地被打破。

在我开展这个项目时,这是一个众所周知的问题,不幸的是Moodle决定继续发布此功能。

在可预见的未来,我建议不要浪费你的时间来尝试使用这个“工具”。

答案 2 :(得分:-1)

尝试从以下位置启用Web服务身份验证: 网站管理&gt;插件&gt;管理身份验证

答案 3 :(得分:-2)

尝试获得令牌抛出https://yourmoodle/login/token.php?username=username&password=pass&service=webserviceshortname。 我的来自/admin/settings.php?section=webservicetokens dosnt的令牌也可以工作 并在/admin/settings.php?section=externalservices

中启用服务功能