目前,我正在使用Django Rest Framework作为我的API和iOS(Swift)作为我的前端,使用Alamofire进行API调用。但是,我遇到了用户身份验证的问题 - 每当我尝试使用Alamofire发出POST请求登录用户时,我都会遇到403错误:
以下是我使用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'))
虽然来自类似帖子的建议尚未解决我的问题,但我相信我的选择
a。)免除我的观点需要一个CSRF令牌(我不确定它是否甚至可能在我的情况下 - 我的观点与include()捆绑在一起作为rest_framework.urls计划的一部分所以使用csrf_exempt进行装饰是行不通的)
b。)以某种方式获取我的POST请求的CSRF令牌
虽然这些是我的想法,但我还没有找到实施它们的实际解决方案或方法,所以非常感谢任何帮助!
答案 0 :(得分:0)
如果要为任何移动应用构建API,则不需要基于会话的身份验证。如果您不使用Cookie来管理会话,则不需要任何CSRF保护。我错了吗 ?但无论如何,如果你想这样做,请通过@csrf_exempt
而不是使用基于令牌的身份验证更好。您可以在django -rest-api-docs中查看它。令牌认证适用于客户端 - 服务器设置,例如本机桌面和移动客户端。