Incapable de se connecter à l'admin de django page avec un nom d'utilisateur valide et un mot de passe
Je ne peux pas me connecter à l'admin de django page. Quand j'ai entrer un nom d'utilisateur valide et un mot de passe, il apporte juste vers la page de login de nouveau, avec pas de messages d'erreur
Cette question est dans la django FAQ, mais j'ai dépassé les réponses et ne peut toujours pas obtenir au-delà de l'écran de connexion initial.
Je suis en utilisant django 1.4 sur ubuntu 12.04 avec apache2 et modwsgi.
J'ai confirmé que je suis de l'inscription de l'admin dans la admin.py
fichier, fait en sorte de syncdb après l'ajout de INSTALLED_APPS
.
Quand je rentre le mot de passe erroné, je NE obtenez une erreur, donc mon admin utilisateur est authentifié, juste pas passer à la page admin.
J'ai essayé les deux paramètre SESSION_COOKIE_DOMAIN
à l'IP de la machine et Aucun. (Confirmé que le cookie de domaine montre que l'IP de la machine dans google chrome)
Aussi, vérifie que l'utilisateur s'authentifie via le 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
Tentative de connexion à l'aide d'IE8 et chrome canary, à la fois des résultats dans le même revenir à l'écran de connexion.
Est-il autre chose que je suis absent????
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()
Version D'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>
Mise à JOUR
La page admin ne procéder lors de l'utilisation du serveur de développement via runserver
de sorte qu'il ressemble à une wsgi/apache question. Je n'ai pas encore pensé à elle encore.
SOLUTION
Le problème était que j'avais le fichier de paramètres SESSION_ENGINE
valeur définie à 'django.contrib.sessions.backends.cache'
sans avoir le CACHE_BACKEND
correctement configuré.
J'ai changé le SESSION_ENGINE à 'django.contrib.sessions.backends.db'
qui a résolu le problème.
- Pouvez-vous coller votre
urls.py
ainsi? - Avez-vous essayé de déplacer
django.middleware.csrf.CsrfViewMiddleware
avantdjango.contrib.auth.middleware.AuthenticationMiddleware
? - Fonctionne lorsque vous êtes en cours d'exécution à partir de
./manage.py runserver
(c'est à dire pas plus demod_wsgi
)? - Êtes-vous réellement en omettant de s'authentifier? Vous pourriez être "connecté", mais toujours à la recherche dans le formulaire de connexion.
- J'ai essayé d'utiliser l'url /admin/app/ après je ayant été renvoyé à l'écran de connexion et il apporte toujours de l'écran de connexion.
- J'ai juste essayé de mettre csrf avant auth et toujours il me ramène à l'écran de connexion.
- Hmm. Êtes-vous sûr que ce n'est pas un problème concernant les cookies? J'ai eu des cas où j'ai oublié de le mettre
SESSION_COOKIE_SECURE = False
dans mon local_settings.py et l'admin ne me permet pas de. Avez-vous essayé de supprimer tous les .pyc fichiers? Peut-être certains de l'ancien code est suspendu autour de. - Viens de vérifier à nouveau, "SESSION_COOKIE_SECURE = False" est dans le fichier de paramètres. J'ai supprimé les paramètres.pyc fichiers et redémarré apache, et toujours le même...
- Ne vous utilisateur is_active? Aussi post sortie de la console, lorsque vous essayez de vous connecter
- pourriez-vous l'essayer sans WSGI dans l'équation (voir ci-dessus)?
- D'accord avec supervacuo, nous allons l'exécuter avec le serveur de dev pour exclure wsgi, apache, ... en tant que source d'ennuis
- Êtes-vous en cours d'exécution sur votre ordinateur local ou de domaine valide? S'il est un domaine, essayez de définir le SESSION_COOKIE_DOMAIN paramètre pour que la place de l'adresse IP de votre ordinateur. Si c'est sur votre machine locale, essayez de programmer l'adresse de bouclage 127.0.0.1.
- oui, j'ai juste confirmé que l'utilisation de runserver il ne procéder passer à l'écran de connexion.
- Faire des erreurs d'apache/logs d'accès montrer quoi que ce soit? Si c'est un WSGI problème, il peut y avoir des problèmes d'autorisation avec certains de vos importations
- Vous pourriez au moins montrer la mod_wsgi de configuration pour confirmer que vous faites la bonne chose.
- non, malheureusement, il n'y a rien dans le journal des erreurs d'apache pour me pointer n'importe où.
- merci pour la mention de cela, j'ai ajouté la config d'apache ci-dessus.
Vous devez vous connecter pour publier un commentaire.
Étapes pour déboguer:
django_session
table?SI PAS
django_session
tabledjango_session
table?Laissez-moi savoir si cela s'avère tout utile de débogage.
Exemple de fichier de paramètres: https://github.com/fyaconiello/Django-Blank-Bare-Bones-CMS/blob/master/dbbbcms/settings.py
SESSION_COOKIE_SECURE = False
. Apparemment, lorsque cette option est définie à True et que la connexion n'est pas en HTTPS (typique pour un dev de l'installation), la connexion ne peut pas être noté car il n'y a pas de cookie de session, de sorte que vous êtes dirigé à nouveau vous connecter. Semble comme il devrait y avoir une erreur lorsque le paramètre nécessite de sécuriser les cookies et la connexion n'est pas sécurisée - une sorte de gros drapeau rouge que la sécurité de votre réseau est foiré mais il ne résoudra pas le problème immédiat avec de l'enregistrement dans l'admin.SESSION_COOKIE_NAME
etCSRF_COOKIE_NAME
étaient différents par projet servi.AUTHENTICATION_BACKENDS = ['Authentication.backends.EmailBackend']
a fonctionné pour moi. Mais est-ce à dire que j'ai toujours commenter chaque fois que j'ai pour vous connecter à l'admin de django ?u.is_active
devrait êtreTrue
is_staff
était étrangementFalse
u.is_staff = True
vous avez un manque de signe égalJe ne crois pas que l'admin mot de passe est stocké dans le settings.py fichier. Il est créé lors de la première syncdb. Je pense à vous, soit ignorée de la création de la super-utilisateur, ou tout simplement fait une faute de frappe.
Essayez d'exécuter dans le terminal lors de vos projets de la racine.:
python django-admin.py createsuperuser
Qui va vous permettre de saisir à nouveau votre identifiant d'administrateur. Ici aussi, on observe https://docs.djangoproject.com/en/dev/ref/django-admin/
Nous avons eu un problème similaire dans notre application, et ceux-ci pourraient vous aider:
Utiliser la commande de nettoyage pour effacer les anciennes sessions de django_sessions
Vérifier le cookie de taille dans firefox(firebug) ou chrome developer tools. Parce que la messagerie est activée par défaut dans l'admin(django.contrib.les messages.middleware.MessageMiddleware), le cookie de taille parfois de plus de 4096 octets avec plusieurs modifications et les suppressions. Un test rapide est de supprimer le "message" de biscuit et de voir si vous pouvez vous connecter par la suite.
Et en fait nous avons fini par commutation de nginx/uwsgi route à cause de cela et d'autres questions liées à la mémoire avec apache. N'ai pas vu cette répété dans nginx depuis.
sonne comme une session de problème parce que, après le post, vous obtenez redirigés immédiatement et le système a oublié que vous vous êtes connecté.
essayez ce qui suit:
Je ne suis pas sûr, mais le problème peut être avec votre URL de configuration, concrètement dans ces deux lignes:
Plus de temps auparavant, j'avais du mal avec la navigation de l'admin de mon projet Django, car une seule configuration de l'URL a remplacé une partie de l'url administration. Il semble que Django n'aime pas lorsque vous spécifiez une URL personnalisée de configuration qui contient des éléments qui sont aussi de la partie admin URL. Dans votre cas, vous avez l'application
django.contrib.sites
activé dans votresettings.py
. Vous pouvez accéder au panneau d'admin de cette application en allant àhttp://127.0.0.1:8000/admin/sites/
. Il se peut que votre configuration d'URL avecr'^sites/'
en elle remplace une partie de l'url administration. Essayez de renommer cette configuration de l'URL ou de désactiverdjango.contrib.sites
dansINSTALLED_APPS
des fins de test.Veuillez noter que ceci est juste une hypothèse. Tout ce que je sais, c'est que Django du panneau d'admin est un peu pointilleux sur les URL des configurations utilisant des noms similaires comme sa propre Url. Je ne peux pas tester moi-même en ce moment. Mais peut-être que cela vous aide un peu.
Avez-vous tenter par la création de l'utilisateur avec :
J'ai le même problème quand j'ai créer la db sur une machine de test et de migrer vers le serveur de déploiement...
Vérifiez que vous avez au moins un
site
de travailler avec.Si vous voyez 0 ici - créer un.
La vérification de certains autres articles sur ce sujet, il pourrait être lié à des sys.chemin d'accès. Pouvez-vous vérifier et comparer sys.chemin d'accès lors de l'exécution du serveur de dev et lors de l'exécution de WSGI.
Pour quelques détails, jetez un oeil cette et que l'article. Mais je voudrais vérifier le sys.voie d'abord, avant de rentrer dans les détails de cet article.
J'ai eu ce problème. Le problème est que dans la production, j'ai deux variables à
True
qui m'a permis de me connecter sur le site en utilisant le protocole https.SESSION_COOKIE_SECURE
etCSRF_COOKIE_SECURE
doit être réglé àFalse
si vous développez sur localhost http. L'évolution de ces deux variables àFalse
m'a permis de me connecter à l'admin du site lors du développement local.Assurez-vous que votre base de données de l'utilisateur table ayant entrée suivante est vraie:
Avertissement: je ne peux pas ajouter de commentaires pour l'instant, j'ai donc à demander des précisions ici de proposer une solution en même temps. Désolé pour ça.
Est l'utilisateur connecté immédiatement après l'enregistrement? quelque chose comme ce problème
Vous pouvez le vérifier dans de nombreuses façons, je suggère d'ajouter un crochet à la déconnexion du signal (vous pouvez le mettre dans votre models.py):
puis essayez de vous connecter et de vérifier si le message s'affiche dans votre console. S'il apparaît, alors vous devez vérifier si vous avez une redirection ou un modèle personnalisé d'appel de déconnexion après la connexion. Espérons qu'il vous aide à trouver le problème.
J'ai eu le même problème et il vient d'être résolu après le redémarrage du serveur :
Vous pouvez vous assurer, l'utilisateur créé a été identifiée comme Is_staff = Vrai, j'ai parfois l'oublier marquer ce pour permettre aux utilisateurs de se connecter à django admin
J'ai eu un problème connexe, où j'avais essayer de se connecter et la page pendre avant la prise finit par être tué. Il s'est avéré que j'étais bien connecté, mais l'un de la connexion des processeurs de signal a été le gel.
Céleri ne pouvais pas me passer de ses tâches asynchrones à RabbitMQ parce que le RabbitMQ serveur n'a pas pu démarrer.
Pour moi, je n'aurais pas de connexion à l'admin de la page dans firefox, mais peut se connecter à chrome.
Le problème était que j'avais CSRF_COOKIE_PATH mis dans mon settings.py.
Ne jamais l'utiliser. Il ne fonctionne pas correctement sur django 1.8.
Après ne pas être en mesure de se connecter à moi-même, j'ai vu dans le commentaire ci-dessus quelqu'un a mentionné à propos de la suppression de paramètres non standard.
En ajoutant ceci à mon local settings résolu pour moi