我被这样的问题困住了。我正在开发托管在Apache/mod\uwsgi上的Django应用程序。你知道吗
我将标准的Django身份验证替换为远程用户身份验证,根据:https://docs.djangoproject.com/en/1.8/howto/auth-remote-user/
当用户请求:mysite.my/登录
所以,我的wsgi.conf文件如下所示,我在mysite.my/登录:
WSGIApplicationGroup %{GLOBAL}
WSGIPythonHome /proj/tool/appl/portal/.venv
WSGIScriptAlias / /proj/tool/appl/portal/portal/wsgi.py
WSGIDaemonProcess portal python-path=/proj/tool/appl/portal/.venv/lib/python3.4/site-packages processes=1 threads=60 graceful-timeout=30 maximum-requests=1000 restart-interval=0 header-buffer-size=32768
WSGIProcessGroup portal
WSGISocketPrefix /tmp/wsgi
LogLevel debug
ErrorLog "/proj/weblogs/backendlogs/portal/apache/server1/wsgi/error.log"
CustomLog "/proj/weblogs/backendlogs/portal/apache/server1/wsgi/access.log" combined
#Timeout 600
<Directory /proj/tool/appl/portal/portal>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
<Location "/login">
Order deny,allow
Allow from all
AllowOverride AuthConfig Limit FileInfo Indexes
AuthType VAS
AuthVASUseBasic on
AuthName "[ Enter Windows Password ]"
Require valid-user
</Location>
问题是:
登录url后:mysite.my/登录Django公司会话用户是正确的(AuthenticatedUser),会话密钥不是None值:
你知道吗网址.py你知道吗
from django.conf.urls import url
urlpatterns = [
url(r'^index', views.index, name='index')
url(r'^login', views.login, name='login'),
]
你知道吗视图.py你知道吗
def login(request, node):
user = request.user
session_key = request.session.session_key
return HttpResponse("User is: {}<br />"
"SessionKey is: {}<br />"
.format(user, session_key))
def index(request, node):
user = request.user
session_key = request.session.session_key
return HttpResponse("User is: {}<br />"
"SessionKey is: {}<br />"
.format(user, session_key))
你知道吗mysite.my/登录登录结果如下:
User is: AuthenticatedUser
SessionKey is: pobrdspueqwopyu4ch6e07ziipi6zn2k
但在那之后当我去mysite.my/索引出人意料的是Django没有看到 用户或会话密钥(丢失会话?)地址:
你知道吗mysite.my/索引你知道吗
Result when go to another url than /login
User is:
SessionKey is: None
我不知道为什么会这样。我试着用模版咒语,阅读课时,但一切都不起作用。我还是去别的地方mysite.my/登录会话将消失。你知道吗
我的设置.py地址:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'OPTIONS': {
'context_processors': [
"django.contrib.auth.context_processors.auth",
"django.template.context_processors.debug",
"django.template.context_processors.i18n",
"django.template.context_processors.media",
"django.template.context_processors.static",
"django.template.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",
"django.template.context_processors.request",
],
'debug': DEBUG,
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]
}
}
]
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# RemoteUser https://docs.djangoproject.com/en/1.8/howto/auth-remote-user/
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
)
AUTHENTICATION_BACKENDS = [
"django.contrib.auth.backends.RemoteUserBackend"
]
SESSION_ENGINE = "django.contrib.sessions.backends.db"
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'portal.wsgi.application'
ROOT_URLCONF = 'portal.urls'
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
]
我的问题是:
为什么Django在我转到另一个url站点时丢失会话数据? 当我在本地运行时
manage.py runserver
会话正常工作。你知道吗
提前谢谢你的帮助。你知道吗
如果我能纠正有问题的事情,请通知我。这是我第一次在这里问。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐