django - djoser 重置密码不断返回 403 禁止
问题描述
我让 djoser 与 rest 框架和 simpleJWT 一起运行以进行身份验证,并且我有一个反应前端,一切正常,除非前端将发布请求发送到“..../auth/users/reset_password”,它返回 403 禁止并且它不会发送包含 uid 和令牌链接的电子邮件,我似乎找不到问题,有人可以帮助解决这个问题吗?这是设置:
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
'rest_framework.permissions.IsAuthenticated',
]
}
DJOSER = {
'LOGIN_FIELD': 'email',
'USER_CREATE_PASSWORD_RETYPE': True,
'USERNAME_CHANGED_EMAIL_CONFIRMATION': True,
'PASSWORD_CHANGED_EMAIL_CONFIRMATION': True,
'SEND_CONFIRMATION_EMAIL': True,
'LOGOUT_ON_PASSWORD_CHANGE': True,
'SET_PASSWORD_RETYPE': True,
'PASSWORD_RESET_CONFIRM_RETYPE': True,
'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/{uid}/{token}',
'USERNAME_RESET_CONFIRM_URL': 'email/reset/confirm/{uid}/{token}',
'ACTIVATION_URL': 'activate/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
'SERIALIZERS': {
'user_create': 'authentication.api.serializers.UserCreateSerializer',
'user': 'authentication.api.serializers.UserCreateSerializer',
'user_delete': 'djoser.serializers.UserDeleteSerializer',
}
}
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'AUTH_HEADER_TYPES': ('JWT',),
}
解决方案
当 403 出现时,典型的事情之一是 URL 有问题。在 Django 端看起来很完美,所以我建议你在前端检查 api 请求的 URL。
推荐阅读
- r - R - 使用 while 循环总是会导致预期为 TRUE/FALSE 的缺失值
- c# - Xamarin.Forms 和 XamarinMediaManager:如何管理错误案例?
- delphi - 编译器看不到 Spring4D TMultiMap 重载构造函数(错误 E2250)
- html - 在“卡片文本中心”下的引导固定高度“卡片主体”中垂直对齐项目
- mysql - 从特定行删除到最后一行
- python - Pandas 将 nan 放在特定行('Feb-29')并将剩余的行向上移动
- python - 在 Dockerfile 中设置非 root 用户并安装 pip 包
- xaml - StackLayout Tableview 截断半屏,但仅在发布模式下
- git - 有没有办法用用于 rebase 的列表预先提供 git rebase
- css - 使用 CSS 将宽度设置为 100% 时,是否可以将高度设置为宽度的百分比