簡體   English   中英

如何在 django rest 框架中的 simplejwt 令牌身份驗證中跳過或刪除密碼字段?

[英]How to skip or remove password field in simplejwt token authentication in django rest framework?

我的要求是,我不想在 simplejwt 令牌身份驗證中輸入密碼。 根據我的要求,我通過繼承TokenObtainPairSerializerinit()方法在身份驗證中添加了一個額外的字段。

目前,我在密碼字段中傳遞None ,但仍向用戶顯示(djnago 管理門戶)。 我想要的是,我不想在使用 simplejwt 進行身份驗證時向用戶顯示密碼字段。

下面是我的代碼,

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer

class CustomSerializer(TokenObtainPairSerializer):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields[self.username_field] = serializers.CharField()
        self.fields['password'] = PasswordField(default=None)
        self.fields['extra'] = serializers.CharField()

    def validate(self, attrs):
        pass

有什么方法可以將 PasswordField 設置為不可用,這樣它就不會顯示給用戶?

我已經按照下面提到的過程來解決問題,

  1. 覆蓋TokenObtainPairSerializer class __init__方法,如下所示,

  2. 使用del self.fields['password'] ,因此它不會詢問您密碼並添加您想要的任何字段。

class CustomSerializer(TokenObtainPairSerializer): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields[self.username_field] = serializers.CharField() del self.fields['password']

這真的很好用。 我已經回答了一個幾乎相同的問題,您可以在此處查看以獲取更多知識。

讓我知道是否有人對此問題有更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM