مدیریت کاربر و احراز هویت در جنگو؛ پیاده سازی سیستم های ثبت نام و ورود

اگر به دنبال آموزش جنگو هستید بد نیست بدانید که یکی از محبوب ترین فریمورک های وب مبتنی بر پایتون است که با تمرکز بر توسعه سریع و طراحی تمیز امکانات بسیاری برای پیاده سازی برنامه های تحت وب ارائه می دهد. یکی از قابلیت های کلیدی که در بسیاری از پروژه های وب مورد نیاز است سیستم های مدیریت کاربر و احراز هویت است. در این مقاله به نحوه پیاده سازی سیستم های ثبت نام و ورود کاربران در جنگو خواهیم پرداخت و اصول مهمی که باید در نظر گرفت را بررسی خواهیم کرد.

مدیریت کاربر و احراز هویت در جنگو؛ پیاده سازی سیستم های ثبت نام و ورود

چرا مدیریت کاربر و احراز هویت مهم است؟

در اکثر وب سایت ها کاربر نیاز به ایجاد حساب کاربری و ورود به سیستم دارد تا بتواند از امکانات و قابلیت های مختلف استفاده کند. داشتن سیستم احراز هویت قوی و مدیریت کاربر به شما اجازه می دهد تا دسترسی کاربران به بخش های مختلف سایت را کنترل کرده و اطلاعات آن ها را به صورت ایمن مدیریت کنید.

پیاده سازی سیستم ثبت نام در Django

در جنگو به راحتی می توان با استفاده از کلاس های پیش فرض این فریمورک سیستم ثبت نام کاربران را پیاده سازی کرد. با این حال برخی سفارشی سازی ها ممکن است برای پروژه شما ضروری باشد. مراحل زیر شما را در ایجاد یک فرم ثبت نام ساده با جنگو راهنمایی می کند.

ایجاد فرم ثبت نام

برای شروع فرم ثبت نام را با استفاده از فرم های جنگو ایجاد می کنیم. ابتدا به فایل forms.py بروید و کد زیر را اضافه کنید :

python

Copy code

from جنگو import forms

from django.contrib.auth.models import User

 

class RegisterForm(forms.ModelForm) :

 password = forms.CharField(widget=forms.PasswordInput)

 confirm_password = forms.CharField(widget=forms.PasswordInput)

 

 class Meta :

  model = User

  fields = [‘username’, ’email’, ‘password’]

 

 def clean(self) :

  cleaned_data = super().clean()

  password = cleaned_data.get(“password”)

  confirm_password = cleaned_data.get(“confirm_password”)

 

  if password != confirm_password :

   raise forms.ValidationError(“Passwords do not match”)

ایجاد ویو ثبت نام

در مرحله بعد ویوی مربوط به ثبت نام را ایجاد می کنیم. در فایل views.py کد زیر را اضافه کنید :

python

Copy code

from django.shortcuts import render, redirect

from django.contrib.auth.models import User

from django.contrib.auth import login

from .forms import RegisterForm

 

def register_view(request) :

 if request.method == ‘POST’ :

  form = RegisterForm(request.POST)

  if form.is_valid() :

   user = form.save(commit=False)

   user.set_password(form.cleaned_data[‘password’])

   user.save()

   login(request, user)

   return redirect(‘home’)

 else :

  form = RegisterForm()

 return render(request, ‘register.html’, {‘form’ : form})

ایجاد قالب ثبت نام

برای نمایش فرم ثبت نام قالب HTML را در فایل register.html بنویسید :

html

Copy code

<form method=”post”>

 {% csrf_token %}

 {{ form.as_p }}

 <button type=”submit”>Register</button>

</form>

پیاده سازی سیستم ورود به Django

اکنون که سیستم ثبت نام را پیاده سازی کردیم نوبت به سیستم ورود کاربر می رسد. جنگو یک فرم ورود پیش فرض دارد که می توان از آن استفاده کرد. مراحل زیر نحوه پیاده سازی این سیستم را توضیح می دهد.

ایجاد ویو ورود

در فایل views.py ویو مربوط به ورود را اضافه کنید :

python

Copy code

from django.contrib.auth import authenticate, login

from django.contrib.auth.forms import AuthenticationForm

 

def login_view(request) :

 if request.method == ‘POST’ :

  form = AuthenticationForm(data=request.POST)

  if form.is_valid() :

   username = form.cleaned_data.get(‘username’)

   password = form.cleaned_data.get(‘password’)

   user = authenticate(username=username, password=password)

   if user is not None :

    login(request, user)

    return redirect(‘home’)

 else :

  form = AuthenticationForm()

 return render(request, ‘login.html’, {‘form’ : form})

ایجاد قالب ورود

قالب HTML مربوط به ورود کاربر را در فایل login.html بنویسید :

html

Copy code

<form method=”post”>

 {% csrf_token %}

 {{ form.as_p }}

 <button type=”submit”>Login</button>

</form>

اضافه کردن مسیرهای URL

در فایل urls.py مسیرهای مربوط به ثبت نام و ورود را اضافه کنید :

python

Copy code

from django.urls import path

from . import views

 

urlpatterns = [

 path(‘register/’, views.register_view, name=’register’),

 path(‘login/’, views.login_view, name=’login’),

]

جداول مقایسه ای از امکانات جنگو برای مدیریت کاربر و احراز هویت

قابلیت

توضیحات

مدیریت کاربر

امکان اضافه حذف و ویرایش کاربران

احراز هویت

سیستم پیش فرض برای بررسی هویت کاربران

حفاظت از گذرواژه ها

ذخیره گذرواژه ها به صورت هش شده

قابلیت سفارشی سازی

امکان توسعه و اضافه کردن ویژگی های اضافی به پروفایل کاربر

نحوه کنترل دسترسی کاربران با استفاده از Middleware در Django

جنگو از Middleware برای اجرای عملیات در طول چرخه درخواست/پاسخ استفاده می کند. شما می توانید از Middleware برای کنترل دسترسی کاربران استفاده کنید. این قابلیت به شما امکان می دهد تا تنها کاربرانی که به سیستم وارد شده اند به برخی صفحات دسترسی داشته باشند.

پیاده سازی Middleware سفارشی

python

Copy code

from django.shortcuts import redirect

 

class LoginRequiredMiddleware :

 def __init__(self, get_response) :

  self.get_response = get_response

 

 def __call__(self, request) :

  if not request.user.is_authenticated and request.path not in [‘/login/’, ‘/register/’] :

   return redirect(‘/login/’)

  response = self.get_response(request)

  return response

کلام آخر

سیستم های مدیریت کاربر و احراز هویت بخش مهمی از هر وب سایتی هستند که می خواهند به کاربرانی مجاز دسترسی های خاصی بدهند. با استفاده از جنگو می توانید به راحتی این سیستم ها را پیاده سازی کرده و دسترسی کاربران را کنترل کنید. توصیه می شود که در پروژه های خود از بهترین روش های امنیتی مانند استفاده از رمزهای قوی و SSL برای افزایش امنیت کاربران استفاده کنید.

آیا شما به دنبال کسب اطلاعات بیشتر در مورد "مدیریت کاربر و احراز هویت در جنگو؛ پیاده سازی سیستم های ثبت نام و ورود" هستید؟ با کلیک بر روی تکنولوژی, کسب و کار ایرانی، به دنبال مطالب مرتبط با این موضوع هستید؟ با کلیک بر روی دسته بندی های مرتبط، محتواهای دیگری را کشف کنید. همچنین، ممکن است در این دسته بندی، سریال ها، فیلم ها، کتاب ها و مقالات مفیدی نیز برای شما قرار داشته باشند. بنابراین، همین حالا برای کشف دنیای جذاب و گسترده ی محتواهای مرتبط با "مدیریت کاربر و احراز هویت در جنگو؛ پیاده سازی سیستم های ثبت نام و ورود"، کلیک کنید.