Я не могу войти на страницу администратора 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'
, что решило проблему.