Skip to main content

Django 和 PHP 之间的身份验证桥接

项目描述

==================================================== =======
django-php-bridge - Django 和 PHP 之间的身份验证
================================ =========================

*******
目的
*******

`Django-PHP-Bridge`_ 是一个Django 身份验证后端,允许您的 Django
项目无缝地将用户传入和传出 PHP 应用程序。这允许
您使用 PHP 和 Django 组件构建应用程序,同时保持
可靠的用户体验。

无论您是从 PHP 移植到 Django,从 Django 移植到 PHP,集成两个
不同的应用程序还是构建一个混合应用程序,`Django-PHP-Bridge`_ 旨在
帮助区分与您的用户无关。

****************
一般方法
****************

有几种不同的方法可以解决这个问题,主要是围绕
哪一方的默认值您使用的行为以及哪一方需要更多
定制。一般来说,我们已经(并且本文档假设)
应该尽可能使用 Django 的默认行为。但是,
完全可以使用提供的会话后端作为更加
以 PHP 为中心的方法的一部分。

Django 默认使用
====================

* ``django.contrib.auth.models.User`` 用于存储用户,
推荐使用标准的 django Profile 扩展对于其他字段。
* 数据库用作会话存储,但这可以很容易地
定制。

使用的 PHP 默认值
=================

* ``django-php-bridge.backends.db`` 使用 PHP 的本机序列化格式来
存储会话数据。

*****
用法
*****

本使用指南假设了一些关于您的设置的内容。

1. 你使用 Django 的 ``django.contrib.auth.backends.ModelBackend`` 作为你的
身份验证后端,并且你想使用 ``django.contrib.auth.models.User``
来存储基本的用户信息。
2. 你的 PHP 和 Django 项目共享一个数据库。会话
协调就是这样完成的。
3. 如果您有一个自定义模式来存储您的用户和配置文件信息,
那么您已经将其转换为 Django 的模式。

用法:Django 端
==================

在项目的 django 端,安装相当简单。

安装 `Django-PHP-Bridge`_::

$ pip install django-php-bridge通过将以下内容添加到您的 ``settings.py`` :: SESSION_ENGINE = 'django_php_bridge

来配置您的 Django 项目以使用与 PHP 兼容的会话后端.backends.db' SESSION_COOKIE_NAME = 'PHPSESSID'让您的 Django 项目知道您将使用项目的 PHP 端进行实际登录。您可以通过设置 ``LOGIN_URL`` 设置







``settings.py`` 指向将处理您的
登录的 PHP 提供的 URL。eg.::

LOGIN_URL = '/'

用法:PHP 端
=============== PHP 端

的安装和设置很复杂,因为 PHP
应用程序通常都非常不同。将
Django-PHP-Bridge 与常见的 PHP 框架(如 `CakePHP`_ 和 `
Symfony`_

一般来说,涉及的步骤是:

创建和使用兼容的会话表
------------------------------------------------ ------

你使用的 session 表需要和 Django 的 schema 兼容
预计。创建表的确切 SQL 会有所不同,但
`sql command`_ 上的 Django Docs 向我们展示了一种通过运行从 django 项目中获取 SQL 的简单方法
::

$ django-admin.py sql sessions

如果你是使用 MySQL,你可以使用 ``contrib/mysql/django_session_table.sql``

或者,你可以使用 Django 的 syncdb 来创建表::

$ manage.py syncdb

.. _`sql 命令`: http://docs.djangoproject .com/en/dev/ref/django-admin/#sql-appname-appname

在每个页面上放置适当的 Session-Handler
---------- -----------------------------

PHP 允许定义“自定义会话处理程序”,这允许我们
使用我们在上面创建的 django_session 表。您使用的会话处理程序
需要了解 django_session 表的模式,并且您需要
在每个页面上注册此会话处理程序*在调用“session_start();”之前*。``contrib/php/djangoSession.class.php``

中提供了一个示例会话处理程序类。.. _`自定义会话处理程序`:http://php.net/manual/en/session.customhandler.php创建和使用兼容的用户表----------------- ---------------------为了实现任何合理的集成级别,大多数项目都需要知道 PHP 和 Django 端的用户是谁。因为大多数通用PHP 项目在存储用户信息的方式上差异很大,如果










从现有的 PHP 项目中,这可能需要一些自定义工作来
转换用户数据。Django 应用程序通常使用 User 模型和
Profile 模型来存储用户数据。有关详细信息,请参阅 `Django Auth 文档`_


包括一个 PHP 类的示例,它依赖与
``django.contrib.auth.models.User`` 相同的模式作为示例和起点。它对
Django 如何存储密码以及哪些字段是必需的有一些了解,
但它肯定需要调整才能与您现有的 PHP
项目一起使用。该文件位于``contrib/php/user.class.php``。

欢迎提出建议和贡献以使这部分集成过程
更容易。

.. _`Django Auth Documentation`: http://docs.djangoproject.com/en/1.3/topics/auth/

配置由 PHP 与 Django 处理的 URL
---------------- -----------------------

最后的集成将告诉您的 Web 服务器如何确定
给定的请求是否应该由 Django 端或在 PHP 方面。
这意味着改变你的配置,例如,
``/account`` 的所有内容都由 Django 提供,``/blog`` 的所有内容都由 PHP 提供。
如果您使用不同的域或子域来分隔应用程序的一侧,
则可以忽略此步骤。

通常,为了使这部分保持理智,您需要提交良好的 URL 实践和
区分项目的哪一侧处理特定任务和域对象。
Django 以应用程序为中心的 urls.py 配置使这变得简单。
应特别注意项目的哪一侧
应处理登录和注销。如果
只有 Django 或只有 PHP 处理登录和注销用户,通常
会更简单,如果同一方处理注册和帐户编辑,则可能更简单。

在 `Apache2`_ 为 Django 运行 `mod_wsgi`_ 和
为 PHP 运行 mod_php(或类似)的情况下,可以在 VirtualHost 文件中完成分离。
``contrib/apache2/vhost_conf`` 中提供了一个示例 vhost 文件。

*******
历史
*******

此身份验证后端是从名为 `PolicyStat`_ 的 saas 策略管理启动在其从 PHP 应用程序到 `Django`_ 应用程序
的多年转换期间从生产中使用的代码中提取的。
你可以阅读
一些关于他们的`PHP to Django Conversion`_。

`PolicyStat`_ 已经转换为 100% Django 并且不再
在生产中使用这种方法,但希望有人有兴趣
在这个项目中发挥积极作用。

************
贡献
************

Django-PHP-Bridge 上的所有开发都发生在 Github:http://github.com/winhamwr/django-php -bridge

强烈鼓励您为改进 Django-PHP-Bridge 做出贡献。
我们特别喜欢关于如何与
特定 PHP 框架集成的贡献。

***********
错误跟踪器
***********

如果您有任何建议、错误报告或问题,请
在 http://github.com/ 上将它们报告给我们的问题跟踪器winhamwr/django-php-bridge/issues/

也可以随意在 Twitter 上发推文 @weswinham。


.. 对于完整的文档,您可以自己构建`sphinx`_ 文档或
.. 访问`在线 Django-PHP-Bridge 文档`_

.. _`Django-PHP-Bridge`:http://github.com/ winhamwr/django-php-bridge/
.. _`Policystat`: http://policystat.com
.. _`Django`: http://www.djangoproject.com/
.. _`CakePHP`: http:// cakephp.org/
.. _`Symfony`: http://www.symfony-project.org/
.. _`Apache2`: http://httpd.apache.org/
.. _`mod_wsgi`: http://www.modwsgi .org/
.. _`PHP 到 Django 的转换`: http://devblog.policystat.com/php-to-django-chang-the-engine-while-the-c
.. _`sphinx`: http:// /sphinx.pocoo.org/
.. _`在线 Django-PHP-Bridge 文档`:http://readthedocs.org/projects/django-php-bridge/

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-php-bridge-0.1.1.tar.gz (9.0 kB 查看哈希)

已上传 source