.. .. META INFORMATION OF TRANSLATION .. .. $TranslationStatus: Done, Waiting for revision $ .. $OriginalRevision: 13609 $ .. $TranslationAuthors: Robson Mendonça $ .. .. INFO OF THIS FILE (DO NOT EDIT! UPDATED BY SUBVERSION) .. .. $HeadURL$ .. $LastChangedRevision$ .. $LastChangedBy$ .. $LastChangedDate$ .. =========================================================== Autenticando no Apache usuários do banco de dados do Django =========================================================== Manter diversos bancos de dados de autenticação em sincronia é um problema comum quando se trabalha com o Apache, por isso você pode configurar o Apache para usar o :doc:`sistema de autenticação ` do Django diretamente. Por exemplo, você poderia: * Servir arquivos static/media diretamente do Apache somente para usuários autenticados. * Acessar um repositório Subversion_ autenticado para usuários Django com uma certa permissão. * Permitir certos usuários conectarem-se para um compartilhamento WebDAV criado com o mod_dav_. .. _Subversion: http://subversion.tigris.org/ .. _mod_dav: http://httpd.apache.org/docs/2.0/mod/mod_dav.html Configurando o Apache ===================== Para autenticar-se na base de dados do Django a partir de um arquivo de configurações do Apache, você precisará utilizar a diretiva ``PythonAuthenHandler`` do mod_python junto com as tradicionais diretivas ``Auth*`` e ``Require``: .. code-block:: apache AuthType Basic AuthName "example.com" Require valid-user SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonAuthenHandler django.contrib.auth.handlers.modpython .. admonition:: Usando o manipulador de autenticação com o Apache 2.2 Se você está usando Apache 2.2, você necessitará seguir alguns passos. Você precisará se assegurar de que o ``mod_auth_basic`` e ``mod_authz_user`` estão carregados. Esses devem ser compilados estaticamente no Apache, ou você pode usar ``LoadModule`` para carregar dinamicamente (como demonstram os exemplos abaixo desta nota). Você também precisará inserir diretivas de configuração que impedem que o Apache tente utilizar outros módulos autenticação, bem como especificar a diretiva ``AuthUserFile`` e apontá-la para ``/dev/null``. Dependendo dos módulos de autenticação que você tenha carregado, você pode precisar ter uma ou mais das seguintes diretivas: .. code-block:: apache AuthBasicAuthoritative Off AuthDefaultAuthoritative Off AuthzLDAPAuthoritative Off AuthzDBMAuthoritative Off AuthzDefaultAuthoritative Off AuthzGroupFileAuthoritative Off AuthzOwnerAuthoritative Off AuthzUserAuthoritative Off Uma configuração completa, com direnças entre Apache 2.0 e Apache 2.2 marcadas em negrito, poderia parecer algo assim: .. parsed-literal:: **LoadModule auth_basic_module modules/mod_auth_basic.so** **LoadModule authz_user_module modules/mod_authz_user.so** ... AuthType Basic AuthName "example.com" **AuthUserFile /dev/null** **AuthBasicAuthoritative Off** Require valid-user SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonAuthenHandler django.contrib.auth.handlers.modpython Por padrão, o manipulador de autenticação limitará o acesso para localização ``/example/`` para usuários marcados como staff. Você pode usar um conjunto de diretivas ``PythonOption`` para modificar esse comportamento: ================================ ========================================= ``PythonOption`` Explicação ================================ ========================================= ``DjangoRequireStaffStatus`` Se marcado como ``on`` somente usuários "staff" (i.e. aqueles com o flag ``is_staff`` setado) serão permitidos. O padrão é ``on``. ``DjangoRequireSuperuserStatus`` Se setado como ``on`` somente super-usuários (i.e. aqueles com o flag ``is_superuser`` setado) serão permitidos. O padrão é ``off``. ``DjangoPermissionName`` O nome de uma permissão de acesso a exigir. Veja :ref:`custom permissions ` para mais informações. Por padrão não será exigida autorização expressa. ================================ ========================================= Note que algumas vezes o ``SetEnv`` não funciona bem com esta configuração do mod_python, por razões desconhecidas. Se você está encontrando problemas para fazer o mod_python reconhecer seu ``DJANGO_SETTINGS_MODULE``, você pode configurá-lo usando ``PythonOption`` em vez de ``SetEnv``. Portanto, estas duas diretivas do Apache são equivalentes:: SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonOption DJANGO_SETTINGS_MODULE mysite.settings