替代Django身份验证

时间:2010-04-05 18:02:04

标签: django authentication external

需要将Django与现有的身份验证系统集成。该系统拥有自己的数据库,API,登录/注销,编辑个人资料网页和cookie。

(我可能需要添加一些在本地存储/更新的其他配置文件字段)

在Django中替换开箱即用的身份验证的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

当我不得不做类似于你必须做的事情的时候,我已经创建了一个自定义身份验证后端。请参阅:http://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend

authenticate函数中,您调用api对用户进行身份验证,然后将其映射到某个主键上的django.contrib.auth.model.User对象,例如用户名。如果主键不是用户名,我通常会创建一个映射对象,或者将其放入项目的配置文件对象中。

答案 1 :(得分:2)

将django开箱即用的身份验证替换为您自己的正确方法是在http://docs.djangoproject.com/en/dev/topics/auth/#specifying-authentication-backends中所述的settings.py中的AUTHENTICATION_BACKENDS元组中替换您的类。这对于您正在描述的问题非常有用。

以这种方式完成身份验证后端的一个很好的例子是django-cas。这使用CAS在django应用程序中进行身份验证。您可以将此作为模板使用,只需将钩子写入您自己的身份验证系统即可。

HTH

答案 2 :(得分:0)

这取决于您希望如何处理问题。如果您不需要保持现有系统运行,最好将其数据导入django项目。

如果身份验证系统必须保持原状,您可能必须为django.auth编写一个包装器。我以前使用SQLAlchemy http://www.sqlalchemy.org来集成到外部数据库。

查看Django 1.2 multi-db支持http://djangoadvent.com/1.2/multiple-database-support

可能会有所帮助

在任何一种情况下,我都会尝试将用户信息导入django.auth,而不是编写自己的身份验证系统。