如何让用户在MOODLE中自动登录

时间:2018-01-08 08:18:25

标签: php api curl moodle moodle-api

我有一个名为xyz.com的门户网站和一个名为yzx.com的Moodle网站。我在这两个站点上都有一些用户,这些用户具有相同的用户名和密码。我想要的是当用户登录名为xyz.com的非Moodle网站时,他应该在yzx.com即moodle网站上自动登录同一用户。

请帮助我如何向moodle发出curl或API请求,以便在当前浏览器上自动登录。 Moodle有user_login函数($ username,$ pass),但我不知道如何使用它,因为我是moodle的新手。

2 个答案:

答案 0 :(得分:0)

我找到了解决方案,并且为了帮助其他人,我自己发布了这个答案。您可以在moodle的整个文件夹中使用Moodles功能,通过我创建的api。

<?php 


require('config.php');
$name=$_REQUEST['username'];
$password=$_REQUEST['password'];
$dashboard = $CFG->wwwroot;
$user = authenticate_user_login($name, $password);
if(complete_user_login($user))
{   
    $actual_link = "http://$_SERVER[HTTP_HOST]/login/logout.php?sesskey=".$user->sesskey;
       echo json_encode(['user'=>$user,'logout'=>$actual_link],true); die;

}
else
{
   echo "not login"; die;
}



?>

在Moodle的任何地方创建此文件,我在moodle的根目录中创建并使用curl命中,使用get或post参数作为用户名和密码。

答案 1 :(得分:-1)

如果您有xyz.com和yzx.com等2个不同的域,则不建议您尝试执行此操作(自动登录)(可能会导致安全风险)。如果你有子域机制,就可以实现。

假设您的主站点在xyz.com上运行,moodle在moodle.xyz.com上运行,那么当用户登录xyz.com时,您可以为*.xyz.com这样的域创建cookie并导航到moodle sub -domain(经过一些修改)它将读取cookie并自动登录。 Cookie可以在主域和子域之间共享,但不能跨不同域共享。我们需要确保cookie名称相同或者可能需要修改moodle中的一些代码来实现这一点。

希望这有帮助!