我有一個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