0
我已在Django
(使用Mongo DB
)實施了基本認證,並且是一個新手。我正在嘗試使用iOS和Android應用程序中的一些Web服務。現在,Django
後端在Postman(REST客戶端)中返回所需的響應,但不在iOS應用中(它通過身份驗證挑戰處理基本身份驗證請求,並在幕後工作),因此我希望確保Django
實現是否正確(以便我將焦點轉移到iOS方面)。在iOS中,該服務返回一個401
Unauthorized
狀態和一個空的響應。此外,還沒有收到認證挑戰(由操作系統自動調用)。我也曾嘗試過類似的第三方網絡庫!所有這些讓我相信Django
實現有什麼問題。那麼,如何驗證特定的Web服務(不僅是Django
構建的)是否按照基本身份驗證協議工作?提示和技巧,請。如何測試url是否具有基本認證
下面是驗證碼:
import base64
from tastypie.authentication import Authentication
from .backend import CustomMongoEngineBackend
class MongoBasicAuthentication(Authentication):
"""
Customizing basic authentication to make it compatible with mongo
"""
def is_authenticated(self, request, **kwargs):
"""
Checks a user's nasic auth credentials against the current Mongo Auth Backend.
"""
if not request.META.get('HTTP_AUTHORIZATION'):
return False
try:
(auth_type, data) = request.META.get('HTTP_AUTHORIZATION').split()
if auth_type.lower() != 'basic':
return False
user_pass = base64.b64decode(data)
except:
return False
bits = user_pass.split(':', 1)
if len(bits) != 2:
return False
backend = CustomMongoEngineBackend()
user = backend.authenticate(email=bits[0], password=bits[1])
if user:
request.user = user
else:
return False
return True
def get_identifier(self, request):
return request.META.get('REMOTE_USER', 'nouser')