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

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

问题描述

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



这个问题在 django常见问题解答,但我已经在那里回答了答案,仍然无法通过初始登录屏幕。



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



我已经确认我在 admin.py 文件中注册管理员,请确保在添加 INSTALLED_APPS 之后syncdb。
当我输入错误的密码时,我发现错误,所以我的管理员用户正在进行身份验证,只是不进行管理页面。



我已尝试将 SESSION_COOKIE_DOMAIN 设置为机器的IP和无。 (确认cookie域显示为机器的Chrome的IP)



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

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

尝试使用IE8和铬金丝雀登录,都会产生相同的返回到登录屏幕。



还有其他我错过的东西?



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#秒
SESSION_COOKIE_DOMAIN =无
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 =模式('',
(r'^ bin /',include('myproject.main.urls')),
(r'^ layer / r(?P< layer_id> \d +)/ $',myproject.layer.views.get_result_layer),
(r'^ layer / b(?P< laye r_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()


$ b $ Apache版本:

  Apache / 2.2.22(Ubuntu)mod_wsgi / 3.3 Python / 2.7.3配置

Apache apache2 / sites-available / default:



< p $ p> < VirtualHost *:80>
ServerAdmin ironman @ localhost
DocumentRoot / var / www / bin
LogLevel warn
WSGIDaemonProcess lbs进程= 2最大请求= 500线程= 1
WSGIProcessGroup lbs
WSGIScriptAlias / /var/www/bin/apache/django.wsgi
别名/ static / var / www / lbs / static /
< / VirtualHost>
< VirtualHost *:8080>
ServerAdmin ironman @ localhost
DocumentRoot / var / www / bin
LogLevel warn
WSGIDaemonProcess tilestache进程= 2最大请求= 500线程= 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 = True

    • SESSION_SAVE_EVERY_REQUEST = True

    • SESSION_COOKIE_AGE = 86400#秒

    • SESSION_COOKIE_DOMAIN =无

    • SESSION_COOKIE_NAME ='DSESSIONID'

    • SESSION_COOKIE_SECURE = False


  • 确保您的数据库已同步


    • 双重检查你有一个 django_session


  • 尝试验证


    • 您是否看到在 django_session 表中创建的记录?

    / li>


让我知道这是否会启动任何有用的调试。



示例设置档案: 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天全站免登陆