Невозможно войти на страницу администратора django с действительным именем пользователя и паролем

Я не могу войти на страницу администратора django. Когда я ввожу правильное имя пользователя и пароль, снова открывается страница входа без сообщений об ошибках

. Этот вопрос находится в FAQ по django , но я просмотрел там ответы и до сих пор не могу пройти мимо начального экрана входа в систему.

Я использую django 1.4 на Ubuntu 12.04 с apache2 и modwsgi.

Я подтвердил, что регистрирую администратора в файле admin.py, обязательно синхронизировал базу данных после добавления INSTALLED_APPS. Когда я ввожу неправильный пароль, я ДЕЙСТВИТЕЛЬНО получаю сообщение об ошибке, поэтому мой пользователь-администратор проходит аутентификацию, просто не переходя на страницу администратора.

Я пробовал как установить SESSION_COOKIE_DOMAINна IP машины, так и None. (Подтверждено, что домен cookie отображается как IP-адрес машины в Chrome)

Также проверил, что пользователь аутентифицируется через шелл:

>>> from django.contrib.auth import authenticate
>>> u = authenticate(username="user", password="pass")
>>> u.is_staff
True
>>> u.is_superuser
True
>>> u.is_active 
True

Попытка входа в систему с использованием IE8 и Chrome Canary приводит к одному и тому же возврату на экран входа в систему.

Я что-то еще упускаю????

settings.py

...
MIDDLEWARE_CLASSES = (
    'django.middleware.gzip.GZipMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',    
    'django.contrib.staticfiles',
    'django.contrib.gis',
    'myapp.main',
)

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SAVE_EVERY_REQUEST = True
SESSION_COOKIE_AGE = 86400 # sec
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_NAME = 'DSESSIONID'
SESSION_COOKIE_SECURE = False

urls.py

from django.conf.urls.defaults import * #@UnusedWildImport
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    (r'^bin/', include('myproject.main.urls')),    
    (r'^layer/r(?P\d+)/$', "myproject.layer.views.get_result_layer"),
    (r'^layer/b(?P\d+)/$', "myproject.layer.views.get_baseline_layer"),
    (r'^layer/c(?P\d+)/$', "myproject.layer.views.get_candidate_layer"),    
    (r'^layers/$', "myproject.layer.views.get_layer_definitions"),
    (r'^js/mapui.js$', "myproject.layer.views.view_mapjs"),
    (r'^tilestache/config/$', "myproject.layer.views.get_tilestache_cfg"),
    (r'^admin/', include(admin.site.urls)),  
    (r'^sites/', include("myproject.sites.urls")),  
    (r'^$', "myproject.layer.views.view_map"),
)


urlpatterns += staticfiles_urlpatterns()

Версия Apache:

Apache/2.2.22 (Ubuntu) mod_wsgi/3.3 Python/2.7.3 configured

Apache apache2/сайты -доступны/по умолчанию:


        ServerAdmin ironman@localhost
        DocumentRoot /var/www/bin
        LogLevel warn
        WSGIDaemonProcess lbs processes=2 maximum-requests=500 threads=1
        WSGIProcessGroup lbs
        WSGIScriptAlias / /var/www/bin/apache/django.wsgi
        Alias /static /var/www/lbs/static/


        ServerAdmin ironman@localhost
        DocumentRoot /var/www/bin
        LogLevel warn
        WSGIDaemonProcess tilestache processes=2 maximum-requests=500 threads=1
        WSGIProcessGroup tilestache
        WSGIScriptAlias / /var/www/bin/tileserver/tilestache.wsgi

ОБНОВЛЕНИЕ

Страница администратора продолжается при использовании сервера разработки через runserver, поэтому это похоже на проблему с wsgi/apache. Еще пока не разобрался.

РЕШЕНИЕ

Проблема заключалась в том, что в файле настроек SESSION_ENGINEбыло установлено значение 'django.contrib.sessions.backends.cache'. без с правильной настройкой CACHE_BACKEND.

Я изменил SESSION _ENGINE на 'django.contrib.sessions.backends.db', что решило проблему.

41
задан monkut 29 August 2012 в 01:39
поделиться