- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个单独的前端和后端站点,我正试图让前端的用户重置他们的密码。我已经为他们创建了一个端点,当通过后端站点访问时它可以工作。但是当我尝试通过 Insomnia 访问端点时,我得到:
Forbidden (403)
CSRF verification failed. Request aborted.
我已将我的前端域添加到 CORS_ORIGIN_WHITELIST
。
class PasswordResetView(auth_views.PasswordResetView):
template_name = 'users/reset_password.html'
@method_decorator(csrf_exempt)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
是否还有一些其他方法我还必须制作 csrf_exempt
?
最佳答案
django.contrib.auth.views.PasswordResetView
装饰其 dispatch
使用 csrf_protect
的方法, 其中csrf_protect = decorator_from_middleware(CsrfViewMiddleware)
.
用你的 csrf_exempt
包装和实际的CsrfViewMiddleware
, 我们有 csrf_protect(csrf_exempt(csrf_protect(<bound method PasswordResetView.dispatch ...>)))
, 其中<bound method PasswordResetView.dispatch ...>
是super().dispatch
.
可以简化为 csrf_protect(<bound method PasswordResetView.dispatch ...>)
.
我们可以欺骗 CsrfViewMiddleware
通过设置 request.csrf_processing_done = True
:
class PasswordResetView(auth_views.PasswordResetView):
template_name = 'users/reset_password.html'
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
request.csrf_processing_done = True
return super().dispatch(request, *args, **kwargs)
或者,您可以设置 super().dispatch.__wrapped__.csrf_exempt = True
但这也有影响其他继承 View 类的副作用 auth_views.PasswordResetView
, 自 super().dispatch.__wrapped__
只是<function PasswordResetView.dispatch ...>
.
关于python - 跨域请求的 CSRF 免除 Django 身份验证密码重置 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72146428/
我有一个单独的前端和后端站点,我正试图让前端的用户重置他们的密码。我已经为他们创建了一个端点,当通过后端站点访问时它可以工作。但是当我尝试通过 Insomnia 访问端点时,我得到: Forbidde
我是一名优秀的程序员,十分优秀!