برنامه نویسی

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

برای محافظت از داده ها در نماها از کاربران ناشناس باید از سیستم احراز هویت استفاده کنید. جنگو توابع داخلی را برای اجرای احراز هویت (اسناد) فراهم می کند.

احراز هویت چیست؟ احراز هویت – فرآیند مقایسه داده های شناسایی کاربر. احراز هویت در دو مرحله انجام می شود:

  • شناسایی کاربر – جستجو در پایگاه داده نام کاربری وارد شده است.
  • احراز هویت اگر نام کاربری از مرحله اول وجود داشته باشد، سیستم در حال مقایسه مقدار از قسمت “رمز عبور” در صفحه HTML با رمز عبور، در پایگاه داده ذخیره می شود. قبل از مقایسه رمز عبور باید هش شود، زیرا پایگاه داده رمز عبور خام را ذخیره نمی کند.

پروژه جنگو خود را باز کنید و مراحل زیر را دنبال کنید:

ایجاد تابع “sign_in” در views.py:

from django.contrib.auth import authenticate, login
from django.shortcuts import redirect


def sign_in(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
        return redirect('core:profile')
    else:
        return redirect('core:sign-in')
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد کنید login.html فایل در دایرکتوری “templates”:


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید url را برای احراز هویت ایجاد کنید urls.py:

from django.urls import path
from .views import sign_in


app_name="core"

urlpatterns = [
    path('sign-in/', sign_in, name="sign-in"),
]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی الگوهای URL در settings.py:

LOGIN_REDIRECT_URL = '/accounts/profile/'
LOGIN_URL = '/accounts/login/'
LOGOUT_REDIRECT_URL = "https://dev.to/"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که نیاز به محدود کردن برخی از داده ها دارید، نه کل نمای، از آن استفاده کنید is_authenticated روش بررسی برنامه‌ای در نمای، احراز هویت کاربر است:

if request.user.is_authenticated:
    # Do something for authenticated users.
    ...
else:
    # Do something for anonymous users.
    ...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بررسی اینکه آیا کاربر در قالب ها احراز هویت شده است:

{% if user.is_authenticated %}
    

Your account doesn't have access to this page. To proceed, please login with an account that has access.

{% else %}

Please login to see this page.

{% endif %}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

علاوه بر این می توانید نمای را با آن تزئین کنید login_required:

from django.contrib.auth.decorators import login_required


@login_required(redirect_field_name="login_page")
def my_protected_view(request):
    ...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا