Tôi muốn đăng nhập địa chỉ IP của người dùng trong ứng dụng Django của tôi, đặc biệt cho các sự kiện đăng nhập, đăng xuất và đăng nhập không thành công. Tôi đang sử dụng Django chức năng được xây dựng trong như sau:IP người dùng đăng nhập Django cho tín hiệu user_login_failed
from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed
from ipware.ip import get_ip
import logging
logger = logging.getLogger(__name__)
def log_logged_in(sender, user, request, **kwargs):
logger.info("%s User %s successfully logged in" % (get_ip(request), user))
def log_logged_out(sender, user, request, **kwargs):
logger.info("%s User %s successfully logged out" % (get_ip(request), user))
def log_login_failed(sender, credentials, **kwargs):
logger.warning("%s Authentication failure for user %s" % ("...IP...", credentials['username']))
user_logged_in.connect(log_logged_in)
user_logged_out.connect(log_logged_out)
user_login_failed.connect(log_login_failed)
Vấn đề là tôi đã không tìm thấy một cách để có được IP cho các tín hiệu user_login_failed
kể từ khi chức năng này không có request
trong các thông số (https://docs.djangoproject.com/en/1.7/ref/contrib/auth/#module-django.contrib.auth.signals) . Thông số credentials
là từ điển chỉ chứa các trường username
và password
.
Làm cách nào để nhận địa chỉ IP cho tín hiệu này?
Rất cám ơn trước sự giúp đỡ của bạn.