Việc xác thực backend có thể mất bất kỳ số lượng các thông số tùy chỉnh cho phương pháp authenticate()
. Ví dụ:
class MyBackend:
def authenticate(self, username=None, password=None, request=None):
# check username, password
if request is not None:
# log values from request object
Nếu bạn đang gọi xác thực theo quan điểm của riêng bạn, bạn có thể vượt qua các đối tượng yêu cầu:
from django.contrib.auth import authenticate
def login(request):
# discover username and password
authenticate(username=username, password=password, request=request)
# continue as normal
Nếu bạn đang sử dụng xem đăng nhập django (hoặc đăng nhập quản trị), bạn sẽ không có thêm thông tin. Nói một cách đơn giản, bạn sẽ phải sử dụng chế độ xem đăng nhập tùy chỉnh của riêng mình.
Ngoài ra, hãy cẩn thận khi tự động khóa tài khoản: bạn cho phép người nào đó cố ý khóa một trong các tài khoản của người dùng (từ chối dịch vụ). Có nhiều cách để giải quyết vấn đề này. Ngoài ra, hãy đảm bảo nhật ký các lần thử không chính xác của bạn không chứa bất kỳ mật khẩu nào đã cố gắng.
Nguồn
2010-08-15 17:19:02
Tôi đang mở rộng ModelBackend - python không cho phép tôi sử dụng các phương thức quá tải? Điều gì sẽ là một cách tốt để đạt được điều này? Chỉ cần đổi tên phương thức 'xác thực' và gọi nó theo quan điểm của tôi? – Roger
Tôi cần phải đặt gì trong chế độ xem đăng nhập? chỉ cần sao chép toàn bộ khung nhìn đăng nhập contrib.auth hiện tại? Tôi không hiểu vì phương pháp đó không bao giờ gọi là 'xác thực' ... – Roger
Bạn chắc chắn có thể quá tải trong python. 'contrib.auth' yêu cầu các backend để có phương thức' authenticate', vì vậy bạn sẽ phải gọi nó là. –