我有一个Django应用程序从外部源(通过HTTP查询)获取它的数据。也就是说,我没有选择本地数据库的选项。会话数据存储在缓存中(在我的开发服务器上,我使用的是SQLite数据库,因此它不是错误源)。我使用流血的Django 1.1svn。Django的用户和来自外部来源的认证
输入问题:我想为用户使用Django自己的认证系统。
编写我自己的身份验证后端似乎相当简单,但总是在您有本地数据库保存用户的条件下。没有数据库我的主要问题是持久性。
我用下面的(假设datasource.get()
是返回某种字典的功能)试了一下:
class ModelBackend (object):
"""Login backend."""
def authenticate (self, username=None, password=None):
"""Check, if a given user/password combination is valid"""
data = datasource.get ('login', username, password)
if data and data['ok']:
return MyUser (username=username)
else:
raise TypeError
return None
def get_user (self, username):
"""get data about a specific user"""
try:
data = datasource.get ('userdata', username)
if data and data['ok']:
return data.user
except:
pass
return None
class MyUser (User):
"""Django user who isn't saved in DB"""
def save (self):
return None
但在MYUSER有意遗漏save()
方法似乎打破登录的会话存储。
MyUser
应该怎么样没有本地数据库?
我刚刚发现 似乎做我想做的。如果我对它进行了评估,我会发布一个答案(不要气馁以添加你自己的;-))。 –
Boldewyn
2009-06-29 10:05:36
该链接有一个不好的拖尾'>'... darn。 – Boldewyn 2009-06-29 10:07:18