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

برای محافظت از داده ها در نماها از کاربران ناشناس باید از سیستم احراز هویت استفاده کنید. جنگو توابع داخلی را برای اجرای احراز هویت (اسناد) فراهم می کند.
احراز هویت چیست؟ احراز هویت – فرآیند مقایسه داده های شناسایی کاربر. احراز هویت در دو مرحله انجام می شود:
- شناسایی کاربر – جستجو در پایگاه داده نام کاربری وارد شده است.
- احراز هویت اگر نام کاربری از مرحله اول وجود داشته باشد، سیستم در حال مقایسه مقدار از قسمت “رمز عبور” در صفحه 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):
...