
روز ۲۳: ورود و خروج کاربران در (Login / Logout) جنگو
مدیریت ورود و خروج کاربران یکی از حیاتیترین بخشهای امنیت و تجربه کاربری در وبسایتها است. جنگو با ارائه سیستم احراز هویت پیشفرض، ابزارهای کامل و استانداردی برای ورود (Login) و خروج (Logout) فراهم کرده است. این سیستم شامل فرمهای آماده، مدیریت جلسات (Sessions)، رمزنگاری امن رمز عبور و کنترل دسترسی کاربران میشود. تسلط بر نحوه ورود و خروج کاربران باعث میشود بتوان صفحات خصوصی، پروفایلها و بخشهای مدیریتی را به صورت امن پیادهسازی کرد و تجربه کاربری استاندارد ارائه داد. در این روز از دوره، تمامی جنبه های ورود و خروج کاربران بررسی میشود و مثالهای عملی برای پیادهسازی ارائه خواهد شد.
ورود کاربران با فرم Login
برای ورود کاربران از فرم پیشفرض جنگو استفاده میکنیم که شامل فیلدهای username و password است. این فرم اعتبارسنجی لازم را انجام داده و در صورت صحت اطلاعات، کاربر را وارد session میکند. ورود کاربران اساس مدیریت دسترسی در سایت است و به ما امکان میدهد صفحات خصوصی و پروفایلها را محدود به کاربران وارد شده کنیم. استفاده از فرم پیشفرض باعث صرفهجویی در زمان و امنیت بالاتر میشود.
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
def user_login(request):
if request.method == 'POST':
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('profile')
else:
error = "نام کاربری یا رمز عبور اشتباه است"
return render(request, 'login.html', {'error': error})
return render(request, 'login.html')در این مثال، پس از ارسال فرم و اعتبارسنجی، کاربر وارد سیستم شده و به صفحه پروفایل هدایت میشود. در صورت خطا، پیام مناسبی نمایش داده میشود تا تجربه کاربری روان باشد.
خروج کاربران با Logout
برای خروج کاربران از سیستم، از متد logout استفاده میکنیم که تمامی sessionهای کاربر را پایان میدهد و کاربر را به صفحه ورود یا صفحه اصلی هدایت میکند. این عملیات باعث میشود دسترسیهای خصوصی کاربر پس از خروج قطع شده و امنیت حساب حفظ شود.
from django.contrib.auth import logout
def user_logout(request):
logout(request)
return redirect('login')با این روش، مدیریت خروج کاربران ساده و امن انجام میشود و تجربه کاربری روان و استاندارد ایجاد میکند.
محافظت از صفحات خصوصی
پس از ورود و خروج کاربران، لازم است صفحات خصوصی با استفاده از decoratorها محافظت شوند. استفاده از login_required باعث میشود کاربران وارد نشده نتوانند به صفحات خصوصی دسترسی داشته باشند و به صفحه ورود هدایت شوند. این تکنیک امنیت سایت را افزایش میدهد و دسترسی به اطلاعات حساس را محدود میکند.
from django.contrib.auth.decorators import login_required
@login_required
def profile(request):
return render(request, 'profile.html')در این مثال، صفحه پروفایل تنها برای کاربران وارد شده قابل مشاهده است و کاربران دیگر به صفحه login هدایت میشوند، بنابراین امنیت اطلاعات حفظ میشود.
استفاده از Templateها برای فرمها
برای فرمهای ورود و خروج میتوان از Templateهای ساده HTML استفاده کرد. استفاده از Templateها باعث میشود تجربه کاربری بصری و استاندارد باشد و فرمها با طراحی دلخواه نمایش داده شوند. علاوه بر این، پیامهای خطا و موفقیت نیز به راحتی قابل نمایش هستند.
<!-- login.html -->
<h2>ورود کاربران</h2>
{% if error %}<p style="color:red">{{ error }}</p>{% endif %}
<form method="post">
{% csrf_token %}
<label>نام کاربری:</label>
<input type="text" name="username" required>
<label>رمز عبور:</label>
<input type="password" name="password" required>
<button type="submit">ورود</button>
</form>این Template ساده، امکان ورود کاربران با نمایش پیام خطا و امنیت CSRF را فراهم میکند و طراحی استاندارد برای فرمها ارائه میدهد.
جمعبندی روز بیست و سوم
در روز بیست و سوم، با ورود و خروج کاربران در جنگو آشنا شدیم. یاد گرفتیم چگونه با استفاده از فرمهای پیشفرض و متدهای authenticate، login و logout کاربران را مدیریت کنیم، صفحات خصوصی را با login_required محافظت کنیم و با Templateها فرمهای ورود و خروج را طراحی کنیم. تسلط بر این بخش باعث میشود وبسایتها امنیت بالایی داشته باشند و تجربه کاربری روان و استاندارد ارائه دهند. یادگیری درست مدیریت ورود و خروج پایهای محکم برای سیستمهای احراز هویت امن و حرفهای است و امکان توسعه پروژههای پیچیدهتر را فراهم میکند.