ویوهای محافظت شده | Protecting Views

جنگو

سلام

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

در تصویر بالا، کاربری وارد سیستم نشده اما توانسته به فرم ارسال پست دسترسی پیدا کند. جنگو برای جلوگیری از این موضوع به صورت پیشفرض یک دکوراتور (decorator) برای ویو دارد.

boards/views.py (مشاهده کد کامل)

from django.contrib.auth.decorators import login_required

@login_required
def new_topic(request, pk):
    # ...

به همین سادگی! حالا اگر کاربری بدون ورود به سیستم آدرس مربوط به ارسال پست جدید را وارد کند به صفحۀ لاگین انتقال می یابد.

به آدرس زیر توجه کنید.

?next=/boards/1/new/

می توانیم روی قالب لاگین کار کنیم تا مقادیر پارامتر next در صفحه نمایش داده شده و تجربه کاربری یا همان UX را بهبود دهیم.

templates/login.html (مشاهده کد کامل)

<form method="post" novalidate>
  {% csrf_token %}
  <input type="hidden" name="next" value="{{ next }}">
  {% include 'includes/form.html' %}
  <button type="submit" class="btn btn-primary btn-block">Log in</button>
</form>

بنابراین در صورت ورود موفقیت آمیز به صفحه ای وارد خواهیم شد که در آن بوده ایم.

همانطور که مشخص است پارامتر next به صورت پیشفرض در جنگو قرار دارد.

ترجمۀ اختصاصی توسط تمدن

 

مطلب بعدی: تست Login Required

مطلب قبلی: مقدمه و مفهوم ORM

بدون دیدگاه

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

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

جنگو
پیکربندی گواهینامۀ https

سلام حالا می خواهیم برنامۀ خودمان را با گواهینامۀ https امن کنیم. ساده ترین کار برای انجام آن Let’s Encrypt است. قبل از Let’s Encrypt هرگز تنظیمات https به این راحتی نبوده و مهمتر اینکه اینکار کاملاً رایگان است. آن ها راه حلی به نام certbot را ارائه داده اند …

جنگو
پیکربندی سرویس ایمیل

سلام یکی از بهتر سرویس دهنده های ایمیل Mailgun با قابلیت ۱۲ هزار ایمیل رایگان در ماه است. به صورت رایگان ثبت نام کنید. برای اینکار باید آن را با سرویس دهندۀ دامین خود تنظیم کنید که در این آموزش از tamadon.org استفاده شده است. حالا اولین رکورد DNS را …

جنگو
پیکربندی NGINX

سلام کار بعدی که قرار است انجام شود؛ تنظیمان Nginx به شکلی است که پاسخگویی و سرویس دهی مربوط به فایل های استاتیک را خود انجام دهد و سایر درخواست ها را به Gunicorn بفرستد. یک فایل پیکربندی با نام boards را درون /etc/nginx/sites-available/ و با محتوای زیر اضافه می …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.