首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管有JWT_AUTH_REFRESH_COOKIE,Django dj-rest-auth不设置cookie。

尽管有JWT_AUTH_REFRESH_COOKIE,Django dj-rest-auth不设置cookie。
EN

Stack Overflow用户
提问于 2022-10-24 11:48:05
回答 1查看 32关注 0票数 0

我有一个简单的Django应用程序管理用户编辑和注册与Django和JWT。根据文档,我已经将应用程序设置为使用JWT与带有settings.py的插件简单jwt

  • JWT_AUTH_COOKIE =‘my auth’
  • JWT_AUTH_REFRESH_COOKIE =“我的刷新-令牌”

预期行为:Cookies应该设置在/refresh auth/和/token/刷新上

问题:Cookie只在/refresh auth/上正确设置,而在/token/上没有正确设置。

这个问题并不新鲜,因为它应该由这里这里来解决。

因此,我还添加了建议的中间件

在这里,我的settings.py:

'dj_rest_auth.jwt_auth.JWTCookieAuthentication',={“默认_身份验证_类”:REST_FRAMEWORK }

代码语言:javascript
复制
REST_USE_JWT = True
JWT_AUTH_COOKIE = 'my-app-auth'
JWT_AUTH_REFRESH_COOKIE = 'my-refresh-token'

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'auth_app.middleware.MoveJWTRefreshCookieIntoTheBody'
]

我的urls.py:

代码语言:javascript
复制
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url, re_path

from auth_app import views

# JWT CONF
from rest_framework_simplejwt.views import (
    TokenRefreshView,
    TokenVerifyView,
)

from dj_rest_auth.registration.views import VerifyEmailView, RegisterView
from dj_rest_auth.views import PasswordResetConfirmView
from allauth.account.views import confirm_email

urlpatterns = [
    path('admin/', admin.site.urls),
    path('token/verify/', TokenVerifyView.as_view(), name='token_verify'),
    path('token/refresh/', TokenRefreshView().as_view(), name='token_refresh'),
    path('api/protected/', views.ProtectedView.as_view(), name='protected_view'),
    path('api/open/', views.OpenView.as_view(), name='open_view'),
    # dj-rest-auth common
    path('dj-rest-auth/', include('dj_rest_auth.urls')),
    # dj-rest-auth registration
    path('dj-rest-auth/registration/', include('dj_rest_auth.registration.urls')),
    path('dj-rest-auth/account-confirm-email/', VerifyEmailView.as_view(), name='account_email_verification_sent'),
    re_path(r'^account-confirm-email/(?P<key>[-:\w]+)/$', VerifyEmailView.as_view(),
     name='account_confirm_email'),
    path(
        'rest-auth/password/reset/confirm/<slug:uidb64>/<slug:token>/',
        PasswordResetConfirmView.as_view(), name='password_reset_confirm'
    ),
]

很长时间以来,我一直在使用所提供的解决方案来检查我的解决方案,但仍然没有在刷新端点上设置cookie。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-10-24 12:53:32

解决了这个问题!

如果将来有人要解决这个问题,请在这里解决:在TokenRefreshView中,您必须用属于dj auth的get_refresh_view()替换simplejwt get_refresh_view()

换句话说,正确的JWT配置是:

代码语言:javascript
复制
# JWT CONF
from rest_framework_simplejwt.views import TokenVerifyView
from dj_rest_auth.jwt_auth import get_refresh_view
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74180659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档