我必须编写一个Django应用程序/网站,它从第三方REST服务器获取所有数据。这意味着我实际上并没有使用任何默认的Django ORM模型,而是从REST请求中读取所有内容。这似乎工作正常,因为我能够在REST服务器上调用一些方法并获取对象列表,显示对象,更新,添加和删除对象......
但是现在我还需要用户登录Django站点/应用程序,因为只有注册和登录的用户才能看到数据。当然,用户也由第三方REST服务器处理,因此不是由Django ORM创建的。
REST API具有获取/创建用户的方法,并检查用户/密码组合是否有效。但我想知道如何在我的Django应用程序/网站中使用它。
我想我将无法使用request.user.is_authenticated这样的东西,因为这是远程REST API应该验证的东西。我已经阅读了一些关于REMOTE_USER的内容,但似乎无法找到关于如何设置RemoteUserBackend以满足我的需求的任何好例子。
此处有任何建议或能指出我正确方向的人吗?
答案 0 :(得分:0)
我会写自己的authentication-backend。
您可以获取凭据,通过REST进行身份验证,获取创建django Usermodel对象所需的信息并返回该信息。这将不会从您自己的数据库中保存或加载。它只是一个新创建的对象。
class MyBackend(object):
def authenticate(self, username=None, password=None, token=None):
if token:
# token auth over rest
elif username and password:
# normal auth over rest
else:
return None
# read django docs to User model
from django.contrib.auth.models import User
myUser = User()
myUser.username = name_from_rest
myUser.set_password(pw_from_rest)
myUser.save()
return myUser
...
我从未这样做过,也不知道这是否有效。但如果我无法将用户保存在任何数据库中,那就是我会尝试的方式。