目前,我正在使用Django Rest Framework作爲我的API和iOS(Swift)作爲使用Alamofire進行API調用的前端。不過,我碰到的一個問題,用戶認證 - 每當我試圖做一個POST請求登錄使用Alamofire用戶,我打這個403錯誤:Django CSRF令牌缺少iOS發佈請求
這裏是我的登陸設置與Alamofire:
func loginUser(data: Parameters) {
let finalUrl = self.generateUrl(addition: "auth/login/")
print(finalUrl)
let header: HTTPHeaders = [ "Accept": "application/json", "Content-Type" :"application/json"]
Alamofire.request(finalUrl,method: .post, parameters: data, encoding: JSONEncoding.default, headers: header).responseString { (response:DataResponse<String>) in
print(data)
switch(response.result) {
case .success(_):
if response.result.value != nil {
print(response.result.value!)
}
break
case .failure(_):
print(response.result.error!)
break
}
}
}
在API方面,我使用的登錄是rest_framework.urls提供的一個...
url(r'^auth/', include('rest_framework.urls', namespace='rest_framework'))
雖然從simil意見AR帖子還沒有解決我的問題,我相信我的選擇是
a。)豁免我的意見,從需要一個CSRF令牌(我不知道是否甚至可能在我的情況 - 我的意見是與include()作爲rest_framework.urls方案的一部分,因此與csrf_exempt裝潢無法工作)
灣)獲得一個CSRF令牌我POST請求莫名其妙
雖然這些是我的想法,我還沒有找到一個實際的解決方案或實施它們的方法,所以任何幫助將不勝感激!
在登錄捕獲csrf令牌中發出get請求,然後在POST請求中使用它。 –
如果您使用基於類的視圖,請確保在urls.py中添加_ViewName.as_view()_。它爲我工作! – Mirza715