python - django 通过用户名检查用户是否登录

标签 python django validation authentication

在django登录中,我们可以输入if request.user.is_authenticated来检查用户是否已登录。 但如果我们想通过输入用户名来检查特定用户的登录状态,我们会得到以下结果:

#Python
def checkLoginStatus(username):
    #do some checks here....
    return True or False

最佳答案

Django 不跟踪用户的登录状态。它跟踪:

  • session 是否有效(未过期、存在于 session 存储中等)
  • 用户上次对自己进行身份验证并从未登录变为已登录的时间(通过 last_login

如果你想跟踪它,你需要自己做:

  • 添加 userprofile model具有可为空字段 session_key .
  • 添加signal receivers对于logged_in和logged_out事件。
  • 发生登录事件时,从 request.session 获取 session key (请求传递给信号)并将其存储在配置文件模型中
  • 发生logged_out事件时,设置session_key至无
  • 现在您可以实现 is_logged_in属性,从其配置文件模型中检索用户的 session key ,然后通过从 Session 获取 session 来检查 session 是否仍然有效。模型。如果有效,则用户已登录。

关于python - django 通过用户名检查用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65448811/

相关文章:

python - 子目录未显示在 django 管理页面中

c++ - 使用 boost 构建 Python 扩展

django - 不使用 webpack 的 React.js 与 Django

python - 在模型级别将 Django DateField 验证为一周中的特定日期的最佳做法是什么?

java - 使用内置注释创建自定义验证注释

迭代到大范围时出现 Python 内存错误

python - 如何在 Pygame 的回合制游戏中创建攻击机制?

Django:提供 ADMIN 媒体文件

javascript - django 中动态形式的 csrf token 错误

python - 如何使用 Python 库验证 XML 文件时出现多个错误?