我无法登录django管理页面。当我输入有效的用户名和密码时,它只会再次显示登录页面,没有任何错误信息。
这个问题可以在django FAQ中找到答案,但我已经阅读了那里的答案,仍然无法通过初始登录屏幕。
我正在使用django 1.4,ubuntu 12.04,apache2和modwsgi。
我已确认admin.py
文件中注册了管理员,并在添加INSTALLED_APPS
后进行了同步数据库操作。
当我输入错误的密码时,我确实会得到错误,因此我的管理员用户已经通过验证,只是没有进入管理员页面。
我尝试过将SESSION_COOKIE_DOMAIN
设置为机器的IP和None。(在chrome中确认cookie域显示为机器的IP)
同时,我还检查了用户是否可以通过shell进行身份验证:
>>> 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<layer_id>\d+)/$', "myproject.layer.views.get_result_layer"),
(r'^layer/b(?P<layer_id>\d+)/$', "myproject.layer.views.get_baseline_layer"),
(r'^layer/c(?P<layer_id>\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/sites-available/default:
<VirtualHost *:80>
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/
</VirtualHost>
<VirtualHost *:8080>
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
</VirtualHost>
更新
当使用通过runserver
启动的开发服务器时,管理员页面可以正常访问,因此看起来是一个wsgi / apache问题。 仍未找到解决方法。
解决方法
问题在于我将设置文件中的SESSION_ENGINE
值设置为'django.contrib.sessions.backends.cache'
,但未正确配置CACHE_BACKEND
。
我将SESSION_ENGINE更改为'django.contrib.sessions.backends.db'
,问题得到了解决。
django.middleware.csrf.CsrfViewMiddleware
移动到django.contrib.auth.middleware.AuthenticationMiddleware
之前吗? - Brandon Taylor./manage.py runserver
运行它时,它是否有效?(即不是通过mod_wsgi
运行)? - supervacuo