问题描述
|
实际上,我正在尝试将我的系统与moodle集成。我需要一种可以这样工作的功能:
登录到我的系统(与moodle db中的用户名相同)
用户决定切换到moodle,因此他单击指向脚本的链接(在moodle服务器上-两个系统都在其他服务器上),然后从数据库中获取要登录的用户的所有数据(数据库中的整个行)。 。
由于密码是加密的,因此我现在无法重定向到带有post参数的登录表单,因为它将无法正常工作。
是否有任何简便的方法可以实现这一目标?我有用户名和哈希,最终哈希了密码。
我正在使用moodle 1.9(系统要求)。
预先感谢您的帮助,
问候大卫
解决方法
对于SSO和Moodle 1.9,需要注意以下几点:
如果您准备花很多时间,可以使用Mnet:http://docs.moodle.org/en/MNet
还有一种phpcas身份验证方法可以执行您想要的操作:http://docs.moodle.org/en/CAS_server_(SSO)
,这是我所做的
1-我启用了(外部数据库)身份验证插件
2-在文件夹(my / moodle / root / login /)中创建此php文件
<?php
require(\'../config.php\');
$username = $_GET[\'id\'];// \'s3265\';
$serverName = \'moodle\' ;
$connectionInfo = array( \"UID\"=>\"mssqlUser\",\"PWD\"=>\"********\",\"Database\"=>\"external_Database\");
//I am using MSSQL2008
echo \'<form action=\"\' . $CFG->wwwroot .
\'/login/index.php\" method=\"post\" name=\"login\" id=\"form\">\';
$conn = sqlsrv_connect( $serverName,$connectionInfo );
if (!$conn)
{die(\'Could not connect: \' . sqlsrv_error());}
$result = sqlsrv_query($conn,\"SELECT * FROM Users WHERE LoginID = \'\" . $username . \"\'\");
var_dump($conn,$result);
while($row = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC))
{
echo $row[\'FName\'] . \" \" . $row[\'LName\'] . \",please wait. . .\";
$password = $row[\'LoginPassword\'];
}
sqlsrv_close($conn);
?>
<p><input type=\"hidden\" name=\"username\" value=\"<?php echo $username ?>\">
<p><input type=\"hidden\" name=\"password\" value=\"<?php echo $password ?>\">
<script language=\"JavaScript\">
function Validate(){document.login.submit();}
Validate();
</script>
</form>
3-假设您命名了rhr文件(test.php)
现在您的链接应类似于(http://your_domain/moodle/login/test.php?id=yourusername)
对我来说是有效的,但是。 。 。我不关心安全性。 。 。如果你愿意。 。 。你必须添加一些东西