2014-09-10 14 views
6

Tôi đã tạo một trang web với django. Người dùng có thể đăng nhập. Giao diện đăng nhập trông giống như sau:Đăng nhập Django với django-axe

from django.contrib.auth import authenticate, login 
from django.contrib.auth.models import User 
.... 
if request.method == 'POST':  
     username = request.POST['username']#get username 
     password = request.POST['txtPwd']# and password 
     user = authenticate(username=username, password=password) #checking username and pwd 
     if user is not None: 
      if user.is_active: 
       login(request, user) 

Nhưng với giải pháp "" này, tôi không thể xử lý tấn công bạo lực. Vì vậy, tôi nhìn xung quanh và thấy điều này: Throttling brute force login attacks in Django

Câu trả lời đầu tiên là hữu ích. Tôi chọn django-rìu vì django-ratelimit chỉ đếm amout gọi một cái nhìn.

Nhưng đây là vấn đề của tôi: Khi tôi cố đăng nhập bằng mật khẩu sai, nó không tính lỗi. (Chỉ tại phần/admin-section).

Tôi không tìm thấy tùy chọn để "thêm" chế độ xem đăng nhập của tôi vào django-trục.

Vì vậy, đây là câu hỏi của tôi:

Làm thế nào tôi có thể cấu hình django trục để xử lý các thông tin đăng nhập không thành công từ của tôi đăng nhập xem?

EDIT: Đây là tôi settings-file:

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'axes', 
) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'axes.middleware.FailedLoginMiddleware' 
) 

... 

AXES_LOCK_OUT_AT_FAILURE = False 
AXES_USE_USER_AGENT = True 
AXES_COOLOFF_TIME = 1 
AXES_LOGIN_FAILURE_LIMIT = 50 
+0

Làm thế nào mà bạn sử dụng django trục trong dự án của bạn? Cung cấp thêm thông tin về tệp cài đặt của bạn. –

+0

Ok, tôi đã thêm tập tin cài đặt. Tôi không thực sự biết cách sử dụng nó (Đây là vấn đề chính). Trang web của dự án không cung cấp thông tin về cách sử dụng nó cho các trang web khác. – Lee

Trả lời

8

Theo mặc định django trục dùng xem đăng nhập django của (django.contrib.auth.views.login). Trong phần mềm trung gian, chế độ xem này được trang trí với watch_login.

Vì vậy, bạn có thể giải quyết vấn đề của bạn theo hai cách:

  • sử dụng xem standart đăng nhập. Bằng cách này, trục django không yêu cầu thiết lập bổ sung.
  • trang trí chế độ xem đăng nhập của bạn với watch_login trang trí.

Ví dụ:

views.py 

from axes.decorators import watch_login 
... 

@watch_login 
def your_custom_login_view(request): 
    ... 
+0

Cũng xin lưu ý rằng nếu chế độ xem của bạn là lớp học sẽ được sử dụng như thế này ' @method_decorator (watch_login, name =' dispatch ') class your_custom_login_view(): ' – ali

Các vấn đề liên quan