如何解决Django Rest Framework中的Simple-JWT的自定义权限
对于我当前的系统,我正在使用Simple-JWT作为用户身份验证。并且也使用Django REST Framework API Key。我对Simple-JWT的简单性感到满意。但是,我想在需要我的Api-Key才能查看令牌页面的地方添加一个权限。
就目前而言,如果我想获得JWT令牌,
我可以简单地转到/ project / api / token /(获取访问权限并刷新令牌)
OR
/ project / api / refresh /(刷新访问令牌)
在我的settings.py文件中,设置了DEFAULT_AUTHENTICATION_CLASSES和DEFAULT_PERMISSION_CLASSES。据我了解,如果我将“ HasAPIKey”作为默认权限类,则所有页面都将需要Api-Key。
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',),'DEFAULT_PERMISSION_CLASSES': (
'rest_framework_api_key.permissions.HasAPIKey',}
但是/ token /和/ refresh /仍然可以在没有Api-Key的情况下访问。 因此,我的目标是确保这些URL需要我的Api-Key。
(注意:我对'simple-jwt'如何提供令牌非常满意。它易于实现。我只想添加'HasAPIKey'权限)
解决方法
创建一个新视图并从rest_framework_simplejwt继承这些视图。为TokenObtainPairView和TokenRefreshView创建函数。将这两个视图插入到自定义视图的参数中。只有这样才能插入权限类。到目前为止,我希望仅使用有效的API密钥访问自定义视图。
views.py
from rest_framework_simplejwt.views import(
TokenObtainPairView,TokenRefreshView,)
class NewTokenObtainPairView(TokenObtainPairView):
permission_classes = (HasAPIKey,)
class NewTokenRefreshView(TokenRefreshView):
permission_classes = (HasAPIKey,)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。