জাজানো - ইমেলের সাথে লগইন করুন


86

আমি চাই জাঙ্গো ব্যবহারকারীদের ইমেলের মাধ্যমে প্রমাণীকরণ করতে, ব্যবহারকারীর নাম দিয়ে নয়। একটি উপায় ইমেল মানটি ব্যবহারকারীর নাম হিসাবে সরবরাহ করা যেতে পারে, তবে আমি তা চাই না। হওয়ার কারণ, আমি একটি ইউআরএল করেছি /profile/<username>/, সুতরাং আমার কোনও ইউআরএল থাকতে পারে না /profile/abcd@gmail.com/

অন্য ইমেলগুলি হ'ল সমস্ত ইমেলগুলি অনন্য, তবে কখনও কখনও এমন হয় যে ইতিমধ্যে ব্যবহারকারীর নামটি নেওয়া হয়েছে। অতএব আমি ব্যবহারকারী নাম হিসাবে স্বয়ংক্রিয়ভাবে তৈরি করছি fullName_ID

আমি কীভাবে জাঙ্গোকে ইমেলের মাধ্যমে প্রমাণীকরণ করতে পারি?

এইভাবে আমি একজন ব্যবহারকারী তৈরি করি।

username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)

এইভাবে আমি লগইন করি।

email = request.POST['email']
password = request.POST['password']
username = User.objects.get(email=email.lower()).username
user = authenticate(username=username, password=password)
login(request, user)

প্রথমে ব্যবহারকারীর নামটি পাওয়া ছাড়া লগইনের অন্য কোনও কি আছে?

উত্তর:


109

আপনার একটি কাস্টম প্রমাণীকরণ ব্যাকএন্ড লিখতে হবে। এর মতো কিছু কাজ করবে:

from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend

class EmailBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        UserModel = get_user_model()
        try:
            user = UserModel.objects.get(email=username)
        except UserModel.DoesNotExist:
            return None
        else:
            if user.check_password(password):
                return user
        return None

তারপরে, সেই ব্যাকএন্ডটি আপনার সেটিংসে আপনার লেখক ব্যাকএন্ড হিসাবে সেট করুন:

AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']

আপডেট হয়েছেModelBackendএটি get_user()ইতিমধ্যে যেমন পদ্ধতি প্রয়োগ করে তেমন উত্তরাধিকার সূত্রে প্রাপ্ত ।

ডক্স এখানে দেখুন: https://docs.djangoproject.com/en/3.0/topics/auth/customizing/#writing-an-authentication- پسدید


6
জাঙ্গো ১.৯.৮ ব্যবহার করে আমি একটি ত্রুটি পেয়েছি: 'ইমেলব্যাকেন্ড' অবজেক্টটিতে 'get_user' বৈশিষ্ট্য নেই। এই অনুযায়ী যোগ 'get_user' পদ্ধতি দ্বারা মীমাংসিত stackoverflow.com/a/13954358/2647009
baltasvejas

4
এই কোডটি কী জাঙ্গো সংস্করণে কাজ করতে পারে তা দয়া করে নির্দিষ্ট করুন। কেউ কেউ get_user পদ্ধতি অনুপস্থিত সম্পর্কে অভিযোগ করছেন।
ডাঃ ইউনস হেনি

4
পরিবর্তে if user.check_password(password):আপনি সম্ভবত জ্যাঙ্গো ডিফল্টরূপে কী করেন তা অন্তর্ভুক্ত করতে চান ModelBackend: if user.check_password(password) and self.user_can_authenticate(user):ব্যবহারকারীর রয়েছে কিনা তা পরীক্ষা করতে is_active=True
jmq

4
এটি উত্স কোডটিতে জ্যাঙ্গো প্রশমনকে অন্তর্ভুক্ত না করায় সময়সাপেক্ষ আক্রমণে কি এই ঝুঁকিপূর্ণ নয়?
গ্যাব্রিয়েল গার্সিয়া

এখন, একটি অনুরোধের মূল অংশটিতে একটি ব্যবহারকারীর নাম এবং একটি পাসওয়ার্ডের মতো ক্ষেত্র থাকা উচিত। এটি কোনও ইমেল এবং পাসওয়ার্ডে পরিবর্তন করার কোনও উপায় আছে কি?
করোল

55

আপনি যদি একটি নতুন প্রকল্প শুরু করছেন, জাঙ্গো আপনাকে একটি কাস্টম ব্যবহারকারী মডেল সেট আপ করার জন্য সুপারিশ করেছে। ( https://docs.djangoproject.com/en/dev/topics/auth/customizing/# using-a-custom-user-model-wen-starting-a-project দেখুন )

এবং যদি আপনি এটি করেন তবে আপনার ব্যবহারকারী মডেলটিতে তিনটি লাইন যুক্ত করুন:

class MyUser(AbstractUser):
    USERNAME_FIELD = 'email'
    email = models.EmailField(_('email address'), unique=True) # changes email to unique and blank to false
    REQUIRED_FIELDS = [] # removes email from REQUIRED_FIELDS

তারপরে authenticate(email=email, password=password)কাজ করে, কাজ করা authenticate(username=username, password=password)বন্ধ করে দেয়।


4
ক্রিয়েটিসুউসার ব্যবহার করার সময়, এটি নিজেই একটি ত্রুটি ছুড়ে ফেলে: টাইপরর: create_superuser () অনুপস্থিত 1 প্রয়োজনীয় অবস্থানগত আর্গুমেন্ট: 'ব্যবহারকারীর নাম'। আপনাকে কাস্টম ব্যবহারকারী পরিচালক ব্যবহার করতে হবে: class MyUserManager(BaseUserManager): def create_superuser(self, email, password, **kwargs): user = self.model(email=email, is_staff=True, is_superuser=True, **kwargs) user.set_password(password) user.save() return user
মিশাল হলব

18
এখানে সম্পূর্ণ নির্দেশাবলী: fomfus.com/articles/…
ব্যবহারকারী 2061057

4
তারপরে, জাজানো ডক্স আপনি যদি পুনরায় ব্যবহারযোগ্য অ্যাপ তৈরি করতে চান তবে একটি কাস্টম ব্যবহারকারী মডেল ব্যবহার করার বিরুদ্ধে পরামর্শ দেয়
djvg

14

জাঙ্গো 3.x এর জন্য ইমেল প্রমাণীকরণ

ডিফল্ট ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রমাণীকরণের পরিবর্তে প্রমাণীকরণের জন্য ইমেল / ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করার জন্য, আমাদের মডেলব্যাকেন্ড ক্লাসের দুটি পদ্ধতি ওভাররাইড করতে হবে: প্রমাণীকরণ () এবং get_user ():

Get_user পদ্ধতিটি ব্যবহারকারীর_আইডিতে লাগে - যা ব্যবহারকারীর নাম, ডাটাবেস আইডি বা যে কোনও কিছু হতে পারে , তবে আপনার ব্যবহারকারীর অবজেক্টের জন্য অনন্য হতে হবে - এবং কোনও ব্যবহারকারী অবজেক্ট বা কোনও কিছুই প্রত্যাখ্যান করে না। আপনি যদি ইমেলটিকে অনন্য কী হিসাবে না রেখে থাকেন তবে ক্যোরি_সেটের জন্য আপনাকে একাধিক ফলাফলের যত্ন নিতে হবে। নীচের কোডটিতে, প্রত্যাবর্তিত তালিকা থেকে প্রথম ব্যবহারকারীকে ফিরিয়ে দিয়ে এটি যত্ন নেওয়া হয়েছে।

from django.contrib.auth.backends import ModelBackend, UserModel
from django.db.models import Q

class EmailBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try: #to allow authentication through phone number or any other field, modify the below statement
            user = UserModel.objects.get(Q(username__iexact=username) | Q(email__iexact=username))
        except UserModel.DoesNotExist:
            UserModel().set_password(password)
        except MultipleObjectsReturned:
            return User.objects.filter(email=username).order_by('id').first()
        else:
            if user.check_password(password) and self.user_can_authenticate(user):
                return user

    def get_user(self, user_id):
        try:
            user = UserModel.objects.get(pk=user_id)
        except UserModel.DoesNotExist:
            return None

        return user if self.user_can_authenticate(user) else None

ডিফল্টরূপে, AUTHENTICATION_BACKENDS এতে সেট করা আছে:

['django.contrib.auth.backends.ModelBackend']

সেটিংস.পাই ফাইলে, ডিফল্টটিকে ওভাররাইড করতে নীচে নীচে অনুসরণ করুন:

AUTHENTICATION_BACKENDS = ('appname.filename.EmailBackend',)

এটি দুর্দান্ত, ধন্যবাদ। আমি বেশিরভাগই একটি প্রকল্প, টেম্পলেট, ফর্ম, দর্শন, প্রচুর কাজ শেষ করেছি, তাই আবার শুরু করা আবেদনময় নয়! এখন আমি ইমেল ঠিকানায় প্রমাণীকরণ করতে পারি যে ব্যবহারকারীর নাম ক্ষেত্র অপসারণের কোনও উপায় আছে যাতে এটি প্রমাণীকরণ এবং টেমপ্লেটে রেন্ডার করা ফর্মগুলির অন্তর্ভুক্ত হয় না?
চাঁদরক্ষক

11

আমার অনুরূপ প্রয়োজনীয়তা ছিল যেখানে ব্যবহারকারী নাম / ইমেলটি ব্যবহারকারীর নাম ক্ষেত্রের জন্য কাজ করা উচিত someone যদি কেউ এইরূপে প্রমাণীকরণের ব্যাকএন্ড উপায়ের সন্ধান করে তবে নীচের কার্যকরী কোডটি দেখুন।

from django.contrib.auth import get_user_model  # gets the user_model django  default or your own custom
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q


# Class to permit the athentication using email or username
class CustomBackend(ModelBackend):  # requires to define two functions authenticate and get_user

    def authenticate(self, username=None, password=None, **kwargs):
        UserModel = get_user_model()

        try:
            # below line gives query set,you can change the queryset as per your requirement
            user = UserModel.objects.filter(
                Q(username__iexact=username) |
                Q(email__iexact=username)
            ).distinct()

        except UserModel.DoesNotExist:
            return None

        if user.exists():
            ''' get the user object from the underlying query set,
            there will only be one object since username and email
            should be unique fields in your models.'''
            user_obj = user.first()
            if user_obj.check_password(password):
                return user_obj
            return None
        else:
            return None

    def get_user(self, user_id):
        UserModel = get_user_model()
        try:
            return UserModel.objects.get(pk=user_id)
        except UserModel.DoesNotExist:
            return None

সেটিংস.পিটিতে AUTHENTICATION_BACKENDS = ('path.to.CustomBackend') যুক্ত করুন


এটি আমার পক্ষে কাজ করেছে যতক্ষণ না আমি 1.11 থেকে 2.1.5 তে আপগ্রেড করেছি। কোনও ধারণা কেন এটি এই সংস্করণটির সাথে কাজ করবে না?
শে

@ জেরেজেড প্রমাণীকরণ পদ্ধতির পরামিতিগুলিতে অনুরোধ যুক্ত করুন। ডকস.ডজ্যাঙ্গোপ্রজেক্ট
ভ্যান


এটি নিষ্ক্রিয় ব্যবহারকারীদের প্রমাণীকরণ করতে সক্ষম করবে।
গ্যাব্রিয়েল গার্সিয়া

5

জ্যাঙ্গো ২.x

উপরে গণেশ দ্বারা জ্যাঙ্গো ২.x এর জন্য উল্লিখিত হিসাবে প্রমাণীকরণ পদ্ধতিতে এখন একটি অনুরোধ পরম প্রয়োজন requires

# backends.py
from django.contrib.auth import backends, get_user_model
from django.db.models import Q
UserModel = get_user_model()


class ModelBackend(backends.ModelBackend):

    def authenticate(self, request, username=None, password=None, **kwargs):
        if username is None:
            username = kwargs.get(UserModel.USERNAME_FIELD)
        try:
            # user = UserModel._default_manager.get_by_natural_key(username)
            # You can customise what the given username is checked against, here I compare to both username and email fields of the User model
            user = UserModel.objects.get(Q(username__iexact=username) | Q(email__iexact=username))
        except UserModel.DoesNotExist:
            # Run the default password hasher once to reduce the timing
            # difference between an existing and a nonexistent user (#20760).
            UserModel().set_password(password)
        else:
            if user.check_password(password) and self.user_can_authenticate(user):
                return user
        return super().authenticate(request, username, password, **kwargs)

আপনার প্রকল্প সেটিংসে আপনার ব্যাকএন্ড যুক্ত করুন

# settings.py
AUTHENTICATION_BACKENDS = ['path.to.ModelBackend']

আপনার কাস্টম ব্যবহারকারী মডেলটির সক্রিয় এবং বৈধ যাচাই করা ব্যবহারকারীদের জন্য ইমেলগুলি অনন্য করা দরকার আপনি এ জাতীয় কিছু দিয়ে কেবল এটি করতে পারেন:

from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
    objects = UserManager()
    email = models.EmailField(_('email address'), unique=True)

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')
        db_table = 'auth_user'
        swappable = 'AUTH_USER_MODEL'

তবে অন্য কাউকে তাদের ইমেল ব্যবহার করতে বাধা দেওয়ার জন্য আপনার পরিবর্তে ইমেল বৈধতা যুক্ত করা উচিত এবং আপনার নিবন্ধকরণ এবং লগইন প্রক্রিয়াটি অ্যাকাউন্টে বিবেচনা করা উচিত যে ইমেলগুলি অনন্য নয় (এবং সম্ভবত নতুন ব্যবহারকারীদের বিদ্যমান এবং বৈধ ইমেল ঠিকানা ব্যবহার করা আটকাতে হবে))


4

জ্যাঙ্গো ২ এক্স এর ইমেল এবং ব্যবহারকারীর নাম প্রমাণীকরণ

এটি একটি সাধারণ প্রশ্ন মনে রেখে, এখানে জ্যাঙ্গো উত্স কোডটি নকল করা একটি কাস্টম বাস্তবায়ন রয়েছে তবে এটি ব্যবহারকারীকে ব্যবহারকারীর নাম বা ইমেল দ্বারা প্রমাণিত করে, সময় আক্রমণ আক্রমণ রক্ষা করে এবং নিষ্ক্রিয় ব্যবহারকারীদের প্রমাণীকরণ করে না

from django.contrib.auth.backends import ModelBackend, UserModel
from django.db.models import Q

class CustomBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            user = UserModel.objects.get(Q(username__iexact=username) | Q(email__iexact=username))
        except UserModel.DoesNotExist:
            UserModel().set_password(password)
        else:
            if user.check_password(password) and self.user_can_authenticate(user):
                return user

    def get_user(self, user_id):
        try:
            user = UserModel.objects.get(pk=user_id)
        except UserModel.DoesNotExist:
            return None

        return user if self.user_can_authenticate(user) else None

সর্বদা এটি আপনার settings.py সঠিক যোগ করার জন্য স্মরণ প্রমাণীকরণ ব্যাক-এন্ড


4
আমার বোধগম্যতা কি সঠিক যে UserModel().set_password(password)কোনও ব্যবহারকারী নির্বিশেষে প্রায় একই পরিমাণ ক্রিপ্টোগ্রাফিক কাজ সম্পাদন করে আক্রমণকারীর উপস্থিতি বা উপস্থিত নেই তা নির্ধারণ করা থেকে বিরত আছে (আমি ধরে নিলাম এটি আপনার বোঝানো সময়সীমার আক্রমণ)?
গ্র্যান্ড ফুবা

2

আপনার মডেলব্যাকেন্ড ক্লাসটি কাস্টমাইজ করা উচিত। আমার সাধারণ কোড:

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth import get_user_model

class YourBackend(ModelBackend):

  def authenticate(self, username=None, password=None, **kwargs):
    UserModel = get_user_model()
    if username is None:
        username = kwargs.get(UserModel.USERNAME_FIELD)
    try:
        if '@' in username:
            UserModel.USERNAME_FIELD = 'email'
        else:
            UserModel.USERNAME_FIELD = 'username'

        user = UserModel._default_manager.get_by_natural_key(username)
    except UserModel.DoesNotExist:
        UserModel().set_password(password)
    else:
        if user.check_password(password) and self.user_can_authenticate(user):
            return user

এবং সেটিংস.পাই ফাইলে যোগ করুন:

AUTHENTICATION_BACKENDS = ['path.to.class.YourBackend']

জ্যাঙ্গো ২.১.১requestauthenticate
গণেশ

2

জ্যাঙ্গো ২.x এর ইমেল এবং ব্যবহারকারীর নাম সহ প্রমাণীকরণ

from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q

class EmailorUsernameModelBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        UserModel = get_user_model()
        try:
            user = UserModel.objects.get(Q(username__iexact=username) | Q(email__iexact=username))
        except UserModel.DoesNotExist:
            return None
        else:
            if user.check_password(password):
                return user
        return None

Settings.py এ, নিম্নলিখিত লাইন যুক্ত করুন,

AUTHENTICATION_BACKENDS = ['appname.filename.EmailorUsernameModelBackend']

1
from django.contrib.auth.models import User

from django.db import Q

class EmailAuthenticate(object):

    def authenticate(self, username=None, password=None, **kwargs):
        try:
            user = User.objects.get(Q(email=username) | Q(username=username))
        except User.DoesNotExist:
            return None
        except MultipleObjectsReturned:
            return User.objects.filter(email=username).order_by('id').first()

        if user.check_password(password):
            return user
        return None

    def get_user(self,user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

এবং তারপরে settings.py:

AUTHENTICATION_BACKENDS = (
  'articles.backends.EmailAuthenticate',
)

যেখানে নিবন্ধগুলি আমার জ্যাঙ্গো-অ্যাপ্লিকেশন, backends.pyএটি আমার অ্যাপ্লিকেশনটির মধ্যে অজগর ফাইল এবং EmailAuthenticateএটি আমার backends.pyফাইলে থাকা প্রমাণীকরণের ব্যাকএন্ড ক্লাস is


1

বেশ সহজ. কোনও অতিরিক্ত ক্লাসের প্রয়োজন নেই।

আপনি যখন কোনও ইমেল তৈরি করে আপডেট করেন, কেবল ইমেলটির সাথে ব্যবহারকারীর নাম ক্ষেত্রটি সেট করুন।

এইভাবে যখন আপনি ব্যবহারকারীর নাম ক্ষেত্রটি অনুমোদন করবেন তখন ইমেলের একই মান হবে।

কোড:

# Create
User.objects.create_user(username=post_data['email'] etc...)

# Update
user.username = post_data['email']
user.save()

# When you authenticate
user = authenticate(username=post_data['email'], password=password)

4
আপনার উত্তর কীভাবে সমস্যা সমাধানে সহায়তা করতে পারে তা প্রদর্শনের জন্য দয়া করে কিছু নমুনা কোড যুক্ত করুন।
স্যুট বয় অ্যাপস

4
@ ক্যাসম্যানআরডিডার আপনার উত্তর মুছে ফেলা হবে যদি আপনি অতিরিক্ত তথ্য যোগ না করেন।
10 জন প্রতিনিধি বলেছেন


0

জ্যাঙ্গো ২.x এর ইমেলের সাথে প্রমাণীকরণ

def admin_login(request):
if request.method == "POST":
    email = request.POST.get('email', None)
    password = request.POST.get('password', None)
    try:
        get_user_name = CustomUser.objects.get(email=email)
        user_logged_in =authenticate(username=get_user_name,password=password)
        if user_logged_in is not None:
            login(request, user_logged_in)
            messages.success(request, f"WelcomeBack{user_logged_in.username}")
            return HttpResponseRedirect(reverse('backend'))
        else:
            messages.error(request, 'Invalid Credentials')
            return HttpResponseRedirect(reverse('admin_login'))
    except:
        messages.warning(request, 'Wrong Email')
        return HttpResponseRedirect(reverse('admin_login'))

else:
    if request.user.is_authenticated:
        return HttpResponseRedirect(reverse('backend'))
    return render(request, 'login_panel/login.html')

আপনার উত্তরটি কী করে তা কীভাবে ব্যাখ্যা করতে পারে এবং কীভাবে এটি প্রশ্নের উত্তর দিতে সহায়তা করে?
জায়েজ

সম্পাদিত। ধন্যবাদ
শাকিল আহম্মেদ

0

আপনি যদি নিজের ইমেল আইডি এবং পাসওয়ার্ডটি বৈধ করতে চান তবে সেখান থেকে কাস্টম ডেটাবেস তৈরি করা হয়।

  1. এর সাথে ইমেল আইডি এবং পাসওয়ার্ড আনুন models.objects.value_list('db_columnname').filter(db_emailname=textbox email)

2. তালিকায় সাইন ইন করুন object_query_list

3. স্ট্রিং থেকে রূপান্তর তালিকা

প্রাক্তন:

  1. এইচটিএমএল Email_idএবং Passwordমানগুলি এতে নিনViews.py

    u_email = request.POST.get('uemail')

    u_pass = request.POST.get('upass')

  2. ডাটাবেস থেকে ইমেল আইডি এবং পাসওয়ার্ড আনুন

    Email = B_Reg.objects.values_list('B_Email',flat=True).filter(B_Email=u_email)

    Password = B_Reg.objects.values_list('Password',flat=True).filter(B_Email=u_email)

  3. Queryমান সেট থেকে তালিকায় ইমেল আইডি এবং পাসওয়ার্ডের মানগুলি নিন

    Email_Value = Email[0]

    Password_Value=Password[0]

  4. তালিকাটি স্ট্রিংয়ে রূপান্তর করুন

    string_email = ''.join(map(str, Email_Value))

    string_password = ''.join(map(str, Password_Value))

অবশেষে আপনার লগইন শর্ত

if (string_email==u_email and string_password ==u_pass)

0

আমি তার জন্য একটি সহায়ক তৈরি করেছি: ফাংশন authenticate_user(email, password)

from django.contrib.auth.models import User


def authenticate_user(email, password):
    try:
        user = User.objects.get(email=email)
    except User.DoesNotExist:
        return None
    else:
        if user.check_password(password):
            return user

    return None

class LoginView(View):
    template_name = 'myapp/login.html'

    def get(self, request):
        return render(request, self.template_name)

    def post(self, request):
        email = request.POST['email']
        password = request.POST['password']
        user = authenticate_user(email, password)
        context = {}

        if user is not None:
            if user.is_active:
                login(request, user)

                return redirect(self.request.GET.get('next', '/'))
            else:
                context['error_message'] = "user is not active"
        else:
            context['error_message'] = "email or password not correct"

        return render(request, self.template_name, context)

0

দেখে মনে হচ্ছে এটি করার পদ্ধতিটি জ্যাঙ্গো 3.0 এর সাথে আপডেট হয়েছে।

আমার জন্য একটি কাজের পদ্ধতিটি হ'ল:

প্রমাণীকরণ.পি # <- আমি এটি একটি অ্যাপ্লিকেশনে রেখেছি (সেটিংস.পি এর পাশাপাশি প্রকল্পের ফোল্ডারে কাজ করেনি

from django.contrib.auth import get_user_model
from django.contrib.auth.backends import BaseBackend
from django.contrib.auth.hashers import check_password
from django.contrib.auth.models import User

class EmailBackend(BaseBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        UserModel = get_user_model()
        try:
            user = UserModel.objects.get(email=username)
        except UserModel.DoesNotExist:
            return None
        else:
            if user.check_password(password):
                return user
        return None

    def get_user(self, user_id):
        UserModel = get_user_model()
        try:
            return UserModel.objects.get(pk=user_id)
        except UserModel.DoesNotExist:
            return None

তারপরে সেটিংস.পি ফাইলটিতে এটি যুক্ত করুন

AUTHENTICATION_BACKENDS = (
    'appname.authentication.EmailBackend',
)

0

ডিফল্ট ব্যবহারকারী মডেল একটি বিমূর্ত শ্রেণীর উত্তরাধিকার সূত্রে / প্রসারিত করে। কাঠামোটি নির্দিষ্ট পরিমাণে পরিবর্তন বা পরিবর্তনের জন্য হালকা হওয়া উচিত।

একটি সহজ হ্যাক নিম্নলিখিতটি করা হয়: এটি ভার্চুয়াল পরিবেশে

  1. আপনার জাঙ্গো ইনস্টলেশন অবস্থানে যান এবং লিব ফোল্ডারটি সন্ধান করুন
  2. জাঙ্গো / অবদান / লেখক / এ নেভিগেট করুন
  3. মডেল.পি ফাইলটি সন্ধান করুন এবং খুলুন। বিমূর্ত ব্যবহারকারীর ক্লাস লাইন 315 সন্ধান করুন

ইমেল বৈশিষ্ট্যে লাইন 336 অনন্য যুক্ত করে এটি সত্যে সেট করে

email = models.EmailField(_('email address'), blank=True,unique=True)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
  1. সম্পন্ন, Makemigration এবং মাইগ্রেশন

নিজের ঝুঁকিতে এটি করুন,

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.