H.f*_*ate 2 django android django-rest-framework postman
我正在使用邮递员检查来自django-rest-framework的json响应。
当我第一次尝试通过POST方法将ID,电子邮件,密码发布到AWS(amazon Web服务)上的django上时,它运行良好。它返回像:
{
"key": "99def123123123123d88e15771e3a8b43e71f"
}
Run Code Online (Sandbox Code Playgroud)
但是在第一次尝试之后,换句话说,从第二次尝试开始,它又返回了
{"detail":"CSRF Failed: CSRF token missing or incorrect."}
Run Code Online (Sandbox Code Playgroud)
(另外编辑+)我的油灰终端说 "POST /rest-auth/login/ HTTP/1.1" 403 58
我看到了http://kechengpuzi.com/q/s31108075,但这不适用于我的情况。
从http://django-rest-framework.narkive.com/sCyJk3hM/authentication-ordering-token-vs-session,我找不到使用邮递员的解决方案
如何正确使用邮递员?
还是可以推荐其他工具使用?
我正在用retrofit2制作android应用程序,所以我需要工具来检查POST,GET方法和响应。
fel*_*oad 11
我遇到了与 Postman 相同的问题。第一次获得令牌后,我被要求在每个请求中包含一个 CSRF,所以我意识到我启用了 Session 和 Token 身份验证方法,所以我注释掉了 SessionAuthentication 行(当然,您也可以将其删除)
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
# 'rest_framework.authentication.SessionAuthentication',
]
Run Code Online (Sandbox Code Playgroud)
之后,我可以仅使用我的凭据而不包含任何 CSRF 代码来请求令牌:
我认为激活这两个身份验证类的事实导致 Django 以某种方式混乱。
如果对DRF使用基于令牌的身份验证,请不要忘记在settings.py中进行设置。否则会出现CSRF错误
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
]
}
Run Code Online (Sandbox Code Playgroud)
您的 api 需要 CSRF 令牌,您必须将 CSRF 令牌添加到请求(和邮递员):
data: { csrfmiddlewaretoken: csrf_token, "username": "thesamething", "email": "thesamething", "password": "thesamething" }
Run Code Online (Sandbox Code Playgroud)
您可以从表单输入字段中获取 CSRF 令牌(如果您使用 django 内置表单 api,您会发现一个隐藏字段)或者如果您使用 Ajax,您可以查看跨站点请求伪造保护。它无关使用您的授权密钥,您的密钥用于识别您的身份,CSRF 令牌用于确保此请求是从您的服务器发送的。
| 归档时间: |
|
| 查看次数: |
9721 次 |
| 最近记录: |