无法使用有效的用户名和密码登录到 django 管理页面 [英] Unable log in to the django admin page with a valid username and password

查看:33
本文介绍了无法使用有效的用户名和密码登录到 django 管理页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法登录到 django 管理页面.当我输入有效的用户名和密码时,它只会再次显示登录页面,没有错误消息

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

我在带有 apache2 和 modwsgi 的 ubuntu 12.04 上使用 django 1.4.

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

我已经尝试将 SESSION_COOKIE_DOMAIN 设置为机器的 IP 和无.(确认cookie域在chrome中显示为机器的IP)

另外,检查用户是否通过 shell 进行了身份验证:

<预><代码>>>>从 django.contrib.auth 导入身份验证>>>u = 验证(用户名=用户",密码=通过")>>>u.is_staff真的>>>u.is_superuser真的>>>u.is_active真的

尝试使用 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',)安装_应用程序 = ('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 = 真SESSION_SAVE_EVERY_REQUEST = 真SESSION_COOKIE_AGE = 86400 # 秒SESSION_COOKIE_DOMAIN = 无SESSION_COOKIE_NAME = 'DSESSIONID'SESSION_COOKIE_SECURE = 假

urls.py

from django.conf.urls.defaults import * #@UnusedWildImport从 django.contrib.staticfiles.urls 导入 staticfiles_urlpatterns从 django.contrib 导入管理员admin.autodiscover()urlpatterns = 模式('',(r'^bin/', include('myproject.main.urls')),(r'^layer/r(?Pd+)/$', "myproject.layer.views.get_result_layer"),(r'^layer/b(?Pd+)/$', "myproject.layer.views.get_baseline_layer"),(r'^layer/c(?Pd+)/$', "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/', 包括(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 配置

Apache apache2/sites-available/default:

ServerAdmin Ironman@localhostDocumentRoot/var/www/bin日志级别警告WSGIDaemonProcess lbs 进程=2 最大请求数=500 个线程=1WSGIProcessGroup 磅WSGIScriptAlias//var/www/bin/apache/django.wsgi别名/static/var/www/lbs/static/</虚拟主机><虚拟主机 *:8080>ServerAdmin Ironman@localhostDocumentRoot/var/www/bin日志级别警告WSGIDaemonProcess tilestache 进程=2 最大请求数=500 个线程=1WSGIProcessGroup tilestacheWSGIScriptAlias//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' 这解决了问题.

解决方案

调试步骤:

  • 确保您的数据库已同步
    • 仔细检查您是否有 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

I can’t log in to the django admin page. When I enter a valid username and password, it just brings up the login page again, with no error messages

This question is in the django FAQ, but I've gone over the answers there and still can't get past the initial login screen.

I'm using django 1.4 on ubuntu 12.04 with apache2 and modwsgi.

I've confirmed that I'm registering the admin in the admin.py file, made sure to syncdb after adding INSTALLED_APPS. When I enter the wrong password I DO get an error, so my admin user is being authenticated, just not proceeding to the admin page.

I've tried both setting SESSION_COOKIE_DOMAIN to the machine's IP and None. (Confirmed that the cookie domain shows as the machine's IP in chrome)

Also, checked that the user authenticates via the 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

Attempted login using IE8 and chrome canary, both results in the same return to the login screen.

Is there something else I'm missing????

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 Version:

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>

UPDATE

The admin page does proceed when using the development server via runserver so it seems like a wsgi/apache issue. Still haven't figured it out yet.

SOLUTION

The problem was that I had the settings file SESSION_ENGINE value set to 'django.contrib.sessions.backends.cache' without having the CACHE_BACKEND properly configured.

I've changed the SESSION_ENGINE to 'django.contrib.sessions.backends.db' which resolved the issue.

解决方案

Steps to debug:

  • Make sure that your Database is synced
    • Double check that you have a django_session table
  • Try to authenticate
    • Do you see a record being created in the django_session table?

IF NOT

  • remove non-standard settings
    • AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
    • 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
  • Make sure that your Database is synced
    • Double check that you have a django_session table
  • Try to authenticate
    • Do you see a record being created in the django_session table?

Let me know if this turns up any useful debug.

Sample settings file: https://github.com/fyaconiello/Django-Blank-Bare-Bones-CMS/blob/master/dbbbcms/settings.py

这篇关于无法使用有效的用户名和密码登录到 django 管理页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆