ویوهای محافظت شده | 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

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگو شرکت کنید؟
نظری بدهید!

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

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