我只想一次只允许一个经过身份验证的会话进行Django应用程序中的个人登录。因此,如果用户使用给定的IP地址登录到网页,并且使用相同的用户凭据从其他IP地址登录,则我想做些事情(注销第一个用户或拒绝访问第二个用户。)
不知道这是否仍然需要,但想与我分享我的解决方案:
1)安装django-tracking(感谢你的贴士Van Gale Google Maps + GeoIP很棒!)
2)添加此中间件:
from django.contrib.sessions.models import Session from tracking.models import Visitor from datetime import datetime class UserRestrictMiddleware(object): """ Prevents more than one user logging in at once from two different IPs """ def process_request(self, request): ip_address = request.META.get('REMOTE_ADDR','') try: last_login = request.user.last_login except: last_login = 0 if unicode(last_login)==unicode(datetime.now())[:19]: previous_visitors = Visitor.objects.filter(user=request.user).exclude(ip_address=ip_address) for visitor in previous_visitors: Session.objects.filter(session_key=visitor.session_key).delete() visitor.user = None visitor.save()
3)确保它位于VisitorTrackingMiddleware之后,你应该发现当有人新登录时以前的登录会自动被破坏:)