2015-04-01 98 views
1

我必须编写一个Django应用程序/网站,它从第三方REST服务器获取所有数据。这意味着我实际上不使用任何默认的Django ORM模型,并从REST请求中读取所有内容。这似乎工作正常,因为我可以调用REST服务器上的某些方法,并获取对象列表,显示对象,更新,添加和删除对象...使用非django用户的Django身份验证

但现在我也需要用户登录到Django站点/应用程序,因为只有注册和登录的用户才能看到数据。当然用户也由第三方REST服务器处理,因此不是由Django ORM创建的。

REST API有获取/创建用户的方法,并检查用户/密码组合是否有效。但我想知道如何从我的Django应用程序/网站中使用它。

我想我不能使用像request.user.is_authenticated之类的东西,因为这是远程REST API应该验证的东西。我已阅读了有关REMOTE_USER的一些信息,但似乎无法找到有关如何设置RemoteUserBackend以满足我需求的任何示例。

这里有谁有任何建议或可以指出我在正确的方向吗?

回答

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 
     ... 

我从来没有这样做,也不知道这是否会奏效。但是,如果我不能将用户保存在任何数据库中,我就会这样做。