我有一个使用Simple JWT进行身份验证的DRF项目。当用户登录时,他们会得到一个包含serializer.data
中的访问和刷新令牌的响应。但是:
在Apis上测试时,我可以手动复制和粘贴这些令牌,并在发出请求时将它们添加到标头中。但是在生产中,
- 这些令牌存储在用户端的何处
- 用户如何将
access
令牌添加到受保护的请求中?(他们不能像我一样复制粘贴( - 他们将如何使用
refresh
令牌来续订access
令牌
因此,如果您谈论的是客户端,用户将使用前端使用您的应用程序:
-
代币可以存储在浏览器的本地存储上
-
所有经过身份验证的URL请求都必须包含承载令牌,您将在其中添加
access_token
,API将在身份验证后返回该令牌,该令牌当前保存在本地存储中。 -
要获得刷新令牌,请添加如下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));