如何从Drupal对Django进行身份验证?

时间:2011-02-18 15:27:33

标签: django performance drupal authentication

我有一个中等大小的Drupal 6站点运行(每月大约500万页面浏览量和超过30K注册用户),我需要集成OSQA,一个Django应用程序。我已经在Drupal数据库中拥有许多用户,角色和权限,我想指出Django应用程序使用我在Drupal中已经拥有的注册和登录页面来为我的用户提供单点入口。

我想保留Django身份验证部分,因为我认为OSQA可以更好地工作。我还有性能原因,Drupal站点已经获得了大量流量并且拥有非常繁忙的数据库,我认为使用单独的Django数据库会有所帮助。

经过一番研究后,我想我可以让Drupal注册并登录页面在后台调用Django来注册或登录Django应用程序。我计划在Django中编写一些视图,一个用于注册,另一个用于登录,Drupal会将用户名和密码发布到这些视图。当然我需要在Django中为这些视图禁用CSRF,并且可能还发布一些秘密密钥,只有我的Drupal和Django应用程序才知道要避免外部站点试图使用这种“不受保护的”Django视图。

我知道我的Django应用程序在某些时候可能需要Drupal的一些用户数据,而我正在计划使用Drupal服务模块。

这会是一个好方法吗?有什么建议吗?

非常感谢!

3 个答案:

答案 0 :(得分:0)

OSQA是否有任何插件可以公开Drupal可以与之通信的身份验证服务? (OpenID或类似)。

或者,查看Drupal的ldap_integration模块,以获取使用外部身份验证服务的模块示例。请考虑您需要为每次登录创建Drupal用户帐户。

最后,为什么不用Drupal构建OSQA功能的基本部分呢?似乎可以使用Taxonomy,Vote Up和Userpoints / User Badges轻松复制关键功能......可能比共享身份验证更容易,特别是在大型站点上。

答案 1 :(得分:0)

我曾经创建了一个非常简单的[sql_authentication] [1]模块,您可以简单地为更新版本的Drupal重新创建。

这个想法很简单:为Drupal提供另一种身份验证回调。 在该回调函数中,只需检查Django数据库,如果您认为用户是正确的,则返回TRUE。

您可以看一下openid.module(在核心中)如何扩展用户身份验证的简单示例。

答案 2 :(得分:0)

如果您可以发布到Django表单,您可以使用drupal_http_request来处理对Django的调用。在使用ldap_integration模块一段时间之后,我使用了一个自定义身份验证模块,该模块使用drupal_http_request调用基于Java的REST身份验证API。如果您对代码感兴趣,请告诉我。