python - 无法使用有效的用户名和密码登录 django 管理页面

标签 python django authentication admin mod-wsgi

我无法登录 django 管理页面。当我输入有效的用户名和密码时,它只是再次打开登录页面,没有错误消息

这个问题在 django FAQ ,但我已经查看了那里的答案,但仍然无法通过初始登录屏幕。

我在 ubuntu 12.04 上使用 django 1.4 和 apache2 和 modwsgi。

我已经确认我在 admin.py 文件中注册了管理员,确保在添加 INSTALLED_APPS 后同步数据库。 当我输入错误的密码时,我确实收到错误,因此我的管理员用户正在通过身份验证,只是没有进入管理页面。

我已经尝试将 SESSION_COOKIE_DOMAIN 设置为机器的 IP 和无。 (确认cookie域在chrome中显示为机器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_session 表
  • 尝试进行身份验证
    • 您是否看到在 django_session 表中创建了一条记录?

如果不是

  • 移除非标准设置
    • AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
    • SESSION_EXPIRE_AT_BROWSER_CLOSE = 真
    • SESSION_SAVE_EVERY_REQUEST = 真
    • SESSION_COOKIE_AGE = 86400 # 秒
    • SESSION_COOKIE_DOMAIN = 无
    • SESSION_COOKIE_NAME = 'DSESSIONID'
    • SESSION_COOKIE_SECURE = 假
  • 确保您的数据库已同步
    • 仔细检查您是否有 django_session
  • 尝试进行身份验证
    • 您是否看到在 django_session 表中创建了一条记录?

如果有任何有用的调试,请告诉我。

示例设置文件:https://github.com/fyaconiello/Django-Blank-Bare-Bones-CMS/blob/master/dbbbcms/settings.py

关于python - 无法使用有效的用户名和密码登录 django 管理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894765/

相关文章:

python - Facebook 连接按钮

php - Laravel `jwt.refresh` token ?

sql-server - Visual Studio 数据库项目 : checking if SQL server login exists before creating it

mysql !php 登录脚本! xampp, localhost phpmyadmin 我从哪里开始

Python 将特定数据框列转换为整数

Python 。独特订购商品列表

python - 安装了 Django AllAuth,找不到登录或注册

css - 背景图片 url django 变量不起作用

python - 使用不同数据类型的 numpy 数组进行多重处理时出现意外行为

python - 如何使用视频网址创建视频并将其添加到 youtube 播放列表?