Use signals to save ip, user_agent, last_login in sessions
This commit is contained in:
21
account/signals.py
Normal file
21
account/signals.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from django.utils.timezone import now
|
||||
from django.dispatch import receiver
|
||||
from django.contrib.auth.signals import user_logged_in, user_logged_out
|
||||
|
||||
|
||||
@receiver(user_logged_in)
|
||||
def add_user_session(sender, request, user, **kwargs):
|
||||
request.session["ip"] = request.META.get('REMOTE_ADDR', '')
|
||||
request.session["user_agent"] = request.META.get('HTTP_USER_AGENT', '')
|
||||
request.session["last_login"] = now()
|
||||
if request.session.session_key not in user.session_keys:
|
||||
user.session_keys.append(request.session.session_key)
|
||||
user.save()
|
||||
|
||||
|
||||
@receiver(user_logged_out)
|
||||
def delete_user_session(sender, request, user, **kwargs):
|
||||
# user may be None
|
||||
if user and request.session.session_key in user.session_keys:
|
||||
user.session_keys.remove(request.session.session_key)
|
||||
user.save()
|
||||
Reference in New Issue
Block a user