如何在Django RestFramework中从用户那里获得JWT令牌



我有一个使用Simple JWT进行身份验证的DRF项目。当用户登录时,他们会得到一个包含serializer.data中的访问和刷新令牌的响应。但是:

在Apis上测试时,我可以手动复制和粘贴这些令牌,并在发出请求时将它们添加到标头中。但是在生产中,

  1. 这些令牌存储在用户端的何处
  2. 用户如何将access令牌添加到受保护的请求中?(他们不能像我一样复制粘贴(
  3. 他们将如何使用refresh令牌来续订access令牌

因此,如果您谈论的是客户端,用户将使用前端使用您的应用程序:

  1. 代币可以存储在浏览器的本地存储

  2. 所有经过身份验证的URL请求都必须包含承载令牌,您将在其中添加access_token,API将在身份验证后返回该令牌,该令牌当前保存在本地存储中。

  3. 要获得刷新令牌,请添加如下URL,您将在其中发送帖子请求:

    from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
    TokenVerifyView,
    )
    urlpatterns = [
    ...
    path(
    'token/refresh/',
    TokenRefreshView.as_view(),
    name='token_refresh',
    ),
    ...
    ]
    

最后有人可以在JS端使用此代码从localstorage:保存或检索令牌

var testObject = { 'one': 1, 'two': 2, 'three': 3 };
// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('retrievedObject: ', JSON.parse(retrievedObject));

最新更新