我有一个Django的中间件控制用户何时尝试登录,并且存在另一个用同样的用户登录的用户。我的代码检查是否存在另外一个用户,并显示一个模板,询问用户是想要注销还是完成其他会话。如果用户选择完成另一个会话,则将其重定向到系统。 request.path对于仅接受请求登录和会话/删除视图非常有用。
def process_request(self, request):
try:
object_list = request.user.session_set.filter(expire_date__gt=timezone.now())
except:
object_list = None
if object_list and len(object_list) > 1:
if request.path != '/users/session/delete' and request.path != '/login/':
return logout(request)
return None
从Chrome浏览器尝试完成在Firefox上运行的一个会话时发生错误。它重定向到注销而不是登录系统。当我在localhost中测试该功能时,它会正常执行。查找错误时,我发现当我使用Chrome中的localhost和web时,请求标头中的'referer'是不同的。
我该怎么做才能解决这个问题?