当前位置: 首页 > 面试题库 >

Django:如果用户未注销,如何检查用户的上次活动时间?

尉迟明辉
2023-03-14
问题内容

django的用户模型有一个last_login字段,如果所有用户每次都离开站点都要注销,那么该字段很好,但是如果没有,该怎么办?

如何跟踪从未注销的用户及其在网站上的活动的时间?


问题答案:

您需要last_activity在用户个人资料(或自定义用户模型)中包含该字段。该字段将根据每个请求进行更新。为此,您需要自定义中间件:

个人资料/middleware.py:

from django.utils import timezone

from myproject.profiles.models import Profile


class UpdateLastActivityMiddleware(object):
    def process_view(self, request, view_func, view_args, view_kwargs):
        assert hasattr(request, 'user'), 'The UpdateLastActivityMiddleware requires authentication middleware to be installed.'
        if request.user.is_authenticated():
            Profile.objects.filter(user__id=request.user.id) \
                           .update(last_activity=timezone.now())

将此中间件添加到您的设置文件中:

MIDDLEWARE_CLASSES = (
    # other middlewares
    'myproject.profiles.middleware.UpdateLastActivityMiddleware',
)


 类似资料:
  • 问题内容: 在某些条件下,在我的Django应用中,我希望能够强制用户使用用户名注销。不一定是当前登录的用户,而是另一个用户。因此,我认为request方法没有关于我要注销的用户的任何会话信息。 我熟悉django.auth和auth。注销方法,但是它将请求作为参数。如果我只有用户名,是否存在“ Django方式”将用户注销?还是我必须推出自己的注销SQL? 问题答案: 我认为Django中尚无认

  • 问题内容: 用户单击注销按钮时可以注销自己,但如果令牌已过期,则他/她将无法注销,因为在我的应用程序中,服务器端和前端都使用了令牌。当用户单击注销按钮时,如果令牌有效,则会清除来自服务器和浏览器的令牌。当用户未注销并且其令牌过期但未在浏览器中清除时,很有可能会出现。为了解决这种情况,我如何在用户每次访问我的应用程序时检查令牌是否到期,因此,如果令牌已过期,请从浏览器中清除令牌? 我尝试过在saga

  • 问题内容: 答案可能很简单:如何在Spring Security中手动注销当前登录的用户: ? 问题答案: 在Servlet 3.0容器中,Spring注销功能与Servlet集成在一起,你只需在上调用。仍然需要编写有效的响应内容。 根据文档(Spring 3.2): HttpServletRequest.logout()方法可用于注销当前用户。 通常,这意味着将清除SecurityContext

  • 我第一次获取FCM并将其保存到我的用户默认值。现在当用户注销时,我如何再次刷新FCM令牌?我搜索了文档和许多其他问题,但没有找到更好的解决方案。 提前谢谢。

  • 问题内容: 嗨,我正在创建一个Web应用程序,如果用户注册,我们将在其中显示创建日期。 为此,我们在sql表中使用当前时间戳记,其中显示了服务器时间,但是我们不知道如何根据用户时区转换时间。 因为我们没有 得到用户所在的国家 。 可以帮我解决这个问题吗 提前致谢 :) 问题答案: 使用JavaScript解决方案 http://www.onlineaspect.com/2007/06/08/aut

  • 我正在用Firebase设置身份验证。我成功登录了,但当我注销时,我的应用程序崩溃了 我在activity_menu上创建菜单。菜单项名为log_out。如果用户单击此项,则必须注销 我尝试这段代码查看错误,但它没有显示给我 我以为它是成功运行的,我没有看到任何错误。我怎么知道呢?