ORM 以外のデータ ソースで Django を使用しようとしています。認証なしでカスタム バックエンドを介して他のリソースにアクセスすることはできますが、ユーザー認証を導入する必要があります。ローカル データベースはありません。リクエスト (たとえば、ユーザー名とパスワードで作成された cURL コマンド) を受け取ると、リモート URL に対して HTTP 基本認証を実行する必要があり、成功すると、ローカルで作成されたユーザー オブジェクトを返す必要があります。 . Tastypie のリソースで、次のように書きました。
class dict2obj(object):
"""
Convert dictionary to object
@source http://stackoverflow.com/a/1305561/383912
"""
def __init__(self, d):
self.__dict__['d'] = d
def __getattr__(self, key):
value = self.__dict__['d'][key]
if type(value) == type({}):
return dict2obj(value)
return value
class RemoteAuth(Authentication):
def is_authenticated(self, request, **kwargs):
username = request.user.username
password = request.user.password
r = requests.get(AUTHENTICATION_URL, auth=(username, password))
if r.status_code == 200:
return True
return False
class UserResource(Resource):
username = fields.CharField(attribute='username')
class Meta:
resource_name = 'user'
authentication = RemoteAuth()
authorization = Authorization()
def obj_get_list(self, request=None, **kwargs):
result = []
posts.append(dict2obj(
{
'username': request.POST.get('username'),
}
))
return result
しかしもちろん、認証オブジェクトはそのようなパスワードを取得できないため、これは機能しません。ローカルデータベースを使用せずにユーザー認証を削除する良い方法を提案してください。