【问题标题】:Django protect access to static mediaDjango 保护对静态媒体的访问
【发布时间】:2011-02-16 10:17:00
【问题描述】:

我有一个网站,只有注册用户才能登录和查看文档,现在文档是通过 apache 提供的,如果你有 URL,可以直接查看而无需登录。我想使用 Django 身份验证来保护这些文件夹,我一直在尝试这样做,但没有任何成功:

httpd.conf:

WSGIScriptAlias / /home/www/wsgi-scripts/mysite.wsgi

<Directory /home/www/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>

<Location /media/protected>
AuthType Basic
AuthName "Authentication Required"
AuthBasicProvider wsgi
WSGIAuthUserScript /home/www/wsgi-scripts/auth.wsgi
Require valid-user
</Location>  

auth.wsgi:

import os, sys
os.environ['PYTHON_EGG_CACHE'] = '/tmp'
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/usr/lib/python2.4/site-packages/django/')
sys.path.append('/home/www')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

from django.contrib.auth.models import User
from django import db
import threading 
cache = threading.local() 

def check_password(environ, username, password): 
    cache.username = None 
    cache.permissions = [''] 
    db.reset_queries() 
    kwargs = {'username': username, 'is_active': True} 
    try: 
        try: 
            user = User.objects.get(**kwargs) 
        except User.DoesNotExist: 
            return None 
        if user.check_password(password): 
            cache.username = username 
            cache.permissions = user.get_group_permissions() 
            return True 
        else: 
            return False 
    finally: 
        db.connection.close()

我做错了什么?

感谢

【问题讨论】:

    标签: django mod-wsgi wsgi


    【解决方案1】:

    看看这个sn-p:http://djangosnippets.org/snippets/491/

    无论如何,在 apache 前面运行 nginx 还是很有用的,因为 apache 处理慢客户端很糟糕。

    【讨论】:

      【解决方案2】:

      Apache 错误日志文件中有哪些错误消息?

      另外,您的 Apache 中加载了哪些“mod_auth*”模块?

      即,正在加载以下哪些内容:

      LoadModule authn_file_module libexec/apache2/mod_authn_file.so
      LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
      LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
      LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
      LoadModule authn_default_module libexec/apache2/mod_authn_default.so
      LoadModule authz_host_module libexec/apache2/mod_authz_host.so
      LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
      LoadModule authz_user_module libexec/apache2/mod_authz_user.so
      LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
      LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
      LoadModule authz_default_module libexec/apache2/mod_authz_default.so
      LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
      LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
      

      它需要其中的某个子集才能工作。上面的列表适用于 Apache 2.2。我不记得哪些是必需的,但是用你现在正在加载的内容更新问题。

      【讨论】:

        猜你喜欢
        • 2021-05-20
        • 2019-05-08
        • 2014-12-19
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        相关资源
        最近更新 更多