Mor*_*eza 5 django jwt django-rest-framework django-allauth dj-rest-auth
我在使用 dj_rest_auth jwt 包时遇到问题。当我注册一个新帐户时,它会为我提供访问令牌和刷新令牌作为响应,但是当我尝试使用凭据登录时,我得到的只是访问令牌,而刷新令牌完全是空的!我按照文档和我遵循的教程中的描述配置了代码。对这个问题有什么想法吗?请告诉我。
更新:我刚刚发现刷新令牌已在响应标头中正确设置,但我无法弄清楚为什么它不在响应正文中并且显示为空?!
设置.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'rest_framework',
'rest_framework.authtoken',
'allauth',
'allauth.account',
'allauth.socialaccount',
'dj_rest_auth',
'dj_rest_auth.registration',
'accounts.apps.AccountsConfig',
]
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'accounts.permissions.IsStaffOrReadOnly',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'dj_rest_auth.jwt_auth.JWTCookieAuthentication',
],
}
SITE_ID = 1
REST_AUTH = {
'USE_JWT': True,
'JWT_AUTH_COOKIE': 'access',
'JWT_AUTH_REFRESH_COOKIE': 'refresh',
}
Run Code Online (Sandbox Code Playgroud)
回复:
{
"access_token": "eyJhbGciOiJ.....",
"refresh_token": "",
"user": {
"pk": 2,
"username": "test_user_0",
"email": "test0@mysite.co",
"first_name": "",
"last_name": ""
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
REST_AUTH = {
'USE_JWT': True,
'JWT_AUTH_HTTPONLY':False
}
Run Code Online (Sandbox Code Playgroud)
将你的rest_auth配置更改为这个然后它应该可以工作
该AUTH_HTTPONLY配置明确禁止客户端JS访问refresh_token。如果您希望它仅通过 cookie 进行管理,请不要更改此设置,如果您想在 JS 中管理您的身份验证状态,则需要更改它。
| 归档时间: |
|
| 查看次数: |
1756 次 |
| 最近记录: |