相关疑难解决方法(0)

如何从不同位置检测到多个登录到Django Web应用程序?

我想一次只允许一个经过身份验证的会话,以便在我的Django应用程序中进行单独登录.因此,如果用户登录到给定IP地址的网页,并且使用相同的用户凭据从不同的IP地址登录,我想做某事(登出第一个用户或拒绝访问第二个用户.)

django django-authentication

24
推荐指数
4
解决办法
1万
查看次数

在Django应用程序中仅允许每个用户使用一个活动会话

我想限制登录用户只有一个活动会话,即如果用户使用新的sessionid登录,则应终止旧会话.我已经在SO上找到了很多帮助: 这里这里

我实现了中间件解决方案,还有一些额外的检查......

class OnlyOneUserMiddleware(object):
"""
Middleware to ensure that a logged-in user only has one session active.
Will kick out any previous session. 
"""
def process_request(self, request):
    if request.user.is_authenticated():
        try:
            cur_session_key = request.user.get_profile().session_key
            if cur_session_key and cur_session_key != request.session.session_key:
                # Default handling... kick the old session...
                Session.objects.get(session_key=cur_session_key).delete()
            if not cur_session_key or cur_session_key != request.session.session_key:
                p = request.user.get_profile()
                p.session_key = request.session.session_key
                p.save()
        except ObjectDoesNotExist:
            pass
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好......在Django开发服务器(manage.py runserver)上一切正常,它踢旧会话......

...但是当使用Apache(使用mod_wsgi)时,它不起作用!

我试图找到关于此的任何信息,但到目前为止没有运气......

我发现的最接近的是这个,但它是一种"相反"的问题......

任何帮助将非常感激.

编辑:我在删除Session之前添加了一个调试打印...这是Apache的error.log的一个片段:

[Fri Jan 20 09:56:50 …
Run Code Online (Sandbox Code Playgroud)

python django mod-wsgi apache2 django-authentication

23
推荐指数
1
解决办法
4239
查看次数

Django如何防止多个用户使用相同的凭据登录

我正在使用django auth模块开发一个Django应用程序,并希望使用相同的用户名和密码防止多次登录.

它应该使用相同的用户名和密码防止在不同计算机上进行多次登录.我如何在Django中实现这一目标?

我们必须牢记以下事项:

  1. 如果用户关闭浏览器而不注销
  2. 如果会话超时

django django-authentication

7
推荐指数
2
解决办法
7571
查看次数