用另一个应用程序验证Drupal 7用户?

时间:2012-11-26 18:17:55

标签: php mysql drupal drupal-7

因此,我公司网站的一部分基本上是使用Drupal 7和商业插件。我想知道是否有一种安全的方法来利用本系统中已存在的用户在网站的其他部分没有使用Drupal。这是为了避免由于程序之间缺乏通信而为单个用户设置两个单独的用户帐户。有没有一种安全的方法来根据Drupal数据库中的信息或标准的方式来验证我的应用程序中的用户? Drupal支持数据库是一个庞大,奇怪,复杂的庞然大物,我宁愿不去激怒它。

我唯一需要做的就是确定用户的凭据是否有效,如果他们通过我的身份验证表单登录。如果我可以通过使用Drupal登录系统(可能通过传递URL转发到之后)来做到这一点,这将是非常好的。或者是否有一个已经管理过的脚本?

我还希望能够确定用户是否已经登录并且仍然记得基于我确信Drupal软件设置的cookie。

我可以非常感谢参考资料,我可以在Drupal核心中使用的适用脚本等。我是一个对Drupal一无所知但对PHP知识很好的人,因为我已经专业地进行了几年的Web开发。

3 个答案:

答案 0 :(得分:4)

是的,这很简单,你可以用两种方式之一。

选项1,使用“服务”模块,您可以使用REST登录/验证用户。

选项2,您可以编写自定义代码。您可以从用户模块中包含所需的Drupal Boostrap或单个文件。然后只需使用user_authenticate()功能检查用户名和密码。

答案 1 :(得分:1)

用PHP使用Drupal bootstrap
这个文件应该在drupal安装中 很容易

//set the working directory to your Drupal root
define("DRUPAL_ROOT",     "/var/www/drupal/");

//require the bootstrap include
require_once 'includes/bootstrap.inc';

//Load Drupal
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
//(loads everything, but doesn't render anything)

$name = 'admin';
$password = 'admin';

//use drupal user_authenticate function
if(!user_authenticate($name, $password)){
    echo 'invalid';
}else{
    echo 'valid';
}

答案 2 :(得分:0)

您也可以使用服务模块使用xml,请参阅此处的详细信息http://drupal.org/node/1105470