如何在MOODLE中让用户自动登录
How to make user auto login in MOODLE
我有一个名为 xyz.com 的门户和一个名为 yzx.com 的 Moodle 站点。我在两个站点上都有一些用户,它们具有相同的用户名和密码。我想要的是,当用户登录名为 xyz.com 的非 Moodle 站点时,他应该自动登录 yzx.com 上的同一用户,即 moodle 站点。
请帮助我如何使 curl 或 API 请求 moodle 以便它在当前浏览器上自动登录。 Moodle 有功能 user_login($username,$pass) 但不知道如何使用它,因为我是 moodle 的新手。
我找到了解决方案,为了帮助其他人,我自己 post 正在回答这个问题。您可以在整个 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 参数作为用户名和密码。
当您有 2 个不同的域(如 xyz.com 和 yzx.com 时,不建议您尝试执行的操作(自动登录)(可能会导致安全风险)。如果有分域机制就可以实现
假设您的主要站点是 运行 在 xyz.com 上,moodle 在 moodle 上。xyz.com 那么当用户登录到 xyz.com 时,您可以为域创建一个 cookie,例如*.xyz.com
并且当您导航到 moodle 子域(经过一些修改)时,它将读取 cookie 并自动登录。 Cookie 可以在主域和子域之间共享,但不能在不同域之间共享。我们需要确保 cookie 名称相同,或者可能需要修改 moodle 中的一些代码来实现这一点。
希望对您有所帮助!
我有一个名为 xyz.com 的门户和一个名为 yzx.com 的 Moodle 站点。我在两个站点上都有一些用户,它们具有相同的用户名和密码。我想要的是,当用户登录名为 xyz.com 的非 Moodle 站点时,他应该自动登录 yzx.com 上的同一用户,即 moodle 站点。
请帮助我如何使 curl 或 API 请求 moodle 以便它在当前浏览器上自动登录。 Moodle 有功能 user_login($username,$pass) 但不知道如何使用它,因为我是 moodle 的新手。
我找到了解决方案,为了帮助其他人,我自己 post 正在回答这个问题。您可以在整个 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 参数作为用户名和密码。
当您有 2 个不同的域(如 xyz.com 和 yzx.com 时,不建议您尝试执行的操作(自动登录)(可能会导致安全风险)。如果有分域机制就可以实现
假设您的主要站点是 运行 在 xyz.com 上,moodle 在 moodle 上。xyz.com 那么当用户登录到 xyz.com 时,您可以为域创建一个 cookie,例如*.xyz.com
并且当您导航到 moodle 子域(经过一些修改)时,它将读取 cookie 并自动登录。 Cookie 可以在主域和子域之间共享,但不能在不同域之间共享。我们需要确保 cookie 名称相同,或者可能需要修改 moodle 中的一些代码来实现这一点。
希望对您有所帮助!