这几天打算做一个用户注册登陆验证,由于我没有使用django自身的数据库和model,这里也不想用它的user认证,因为只有天知道会不会有天老大说,我们不要用django了,给我移植一下吧。但是在这个架构上写东西,很多东西还是被它的安全机制所限制。
打算用session存储user信息,用django的认证,就需要在数据库里“manage.py syncdb”一下生成很多auth相关的表,而且生成的user的password还是明码,这个对于安全机制没什么要求的人来说,这么多表和严格认证都是累赘。我为了使用本地file存储session,在settings.py里加上了:
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
SESSION_FILE_PATH = "D:/learn/Monitor/static/data"
但是,在view里我用request.session获取到的session竟然是[], 无论我是否修改了session值,到新页面仍然是[]; 而且HttpResponse和HttpResponseRedirect也不再听话,所有的设想都破灭了,甚至莫名的弹出了这样一个错误框:
无头绪,但是任务还是要完成,改用django的用户认证得了,于是回来把admin相关的url.py,settings.py中的配置都修改回来:
url.py:
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),
settings.py:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'djangomako.middleware.MakoMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
。。。。。
然后“manage.py syncdb”生成了auth相关的表,并同时创建superuser:“ user:admin,password:admin”;
最后打开“127.0.0.1:8000/admin”; 弹出了登陆框,输入用户名和密码,确认输入正确啊!!!可是仍然不让我进去!!!
实在是晕了。。。。整了一上午,突然想起来我让session存在本地文件导致session访问不到,这个auth认证本来默认存在数据库的,而默认被我修改到file读取,而file完全读不到,即使输入了正确的用户名和密码,仍然就被无情的抛弃掉了,当然进不到用户登录成功的管理界面!原来是这个道理,于是: 我赶紧把
settings.py 里的
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
SESSION_FILE_PATH = "D:/learn/Monitor/static/data"
删除掉,再试,总算是进去了,╮(╯▽╰)╭