程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 django 3.1 使用 djoser 进行自定义身份验证大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 django 3.1 使用 djoser 进行自定义身份验证?

开发过程中遇到使用 django 3.1 使用 djoser 进行自定义身份验证的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 django 3.1 使用 djoser 进行自定义身份验证的解决方法建议,希望对你解决使用 django 3.1 使用 djoser 进行自定义身份验证有所启发或帮助;

我在使我的后端(使用电话号码或电子邮件地址登录)与 djoser 一起登录时遇到问题。它似乎只是登录超级用户帐户,我希望它采用电话号码或电子邮件地址。 ps:后端不是来自 django rest 框架,但我从 vanilla django 创建了一个自定义身份验证。(我在 API 之前创建了完整的项目,以防万一这可能是问题) 我是 API 和 Django 的新手,我希望这是一个相关的问题。

这是我的代码,如果您需要更多,请告诉我,谢谢

我的设置:

DJOSER = {
    'user_CREATE_password_RETYPE':True,'USERname_CHANGED_EMAIL_CONFIRMATION':True,'passworD_CHANGED_EMAIL_CONFIRMATION':True,'SEND_CONFIRMATION_EMAIL':True,'SET_USERname_RETYPE':True,'SET_password_RETYPE':True,'passworD_reset_CONFIRM_URL':'password/reset/confirm/{uID}/{token}','USERname_reset_CONFIRM_URL':'password/reset/confirm/{uID}/{token}','ACTIVATION_URL':'activate/{uID}/{token}','SEND_ACTIVATION_EMAIL':True,'serialiZERS': {
        'user_create': 'rafiki.serializerS.UserCreateserializer','user': 'rafiki.serializerS.UserCreateserializer','user_delete': 'djoser.serializerS.Userdeleteserializer',}

}

我的身份验证模型:

class CustomUseRMANager(BaseUseRMANager):
    """
    Custom user model manager where Email_Address is the unique IDentifIErs
    for authentication instead of usernames.
    """
    def create_user(self,Email_Address,password,**extra_fIElds):
        """
        Create and save a User with the given Email_Address and password.
        """
        if not Email_Address:
            raise ValueError(_('The Email_Address must be set'))
        Email_Address = self.normalize_email(Email_Address)
        user = self.model(Email_Address=Email_Address,**extra_fIElds)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self,**extra_fIElds):
        """
        Create and save a SuperUser with the given Email_Address and password.
        """
        extra_fIElds.setdefault('is_staff',TruE)
        extra_fIElds.setdefault('is_superuser',TruE)
        extra_fIElds.setdefault('is_active',TruE)

        if extra_fIElds.get('is_staff') is not True:
            raise ValueError(_('Superuser must have is_staff=True.'))
        if extra_fIElds.get('is_superuser') is not True:
            raise ValueError(_('Superuser must have is_superuser=True.'))
        return self.create_user(Email_Address,**extra_fIElds)


class Customer(AbstractUser):
    username = None
    Phone_number = models.CharFIEld(max_length=15,blank=TruE)
    Email_Address = models.EmailFIEld(unique=TruE)


    USERname_FIELD = 'Email_Address'
    required_FIELDS = []

    objects = CustomUseRMANager()

    class Meta:
        verbose_name = 'Customer'
        verbose_name_plural = 'Customers'

认证类:

from django.contrib.auth import get_user_R_634_11845@odel
from django.contrib.auth.BACkends import BaseBACkend
from store.models import Customer
from django.db.models import Q




class MyBACkend(BaseBACkend):

    def authenticate(self,request,username=None,password=NonE):
        try:
            user = Customer.objects.get(
                Q(Phone_number=userName) | Q(Email_Address=userName)
            )
            pwd_valID = user.check_password(password)
            if pwd_valID:
                return user
            return None
        except user.DoesnotExist:
            return None

    def get_user(self,user_iD):
        try:
            return Customer.objects.get(pk=user_iD)
        except Customer.DoesnotExist:
            return None

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用 django 3.1 使用 djoser 进行自定义身份验证全部内容,希望文章能够帮你解决使用 django 3.1 使用 djoser 进行自定义身份验证所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。