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

如何获取通过身份验证的用户列表?

黄德明
2023-03-14
问题内容

class models.User is_authenticated()¶ 始终返回True。这是一种判断用户是否已通过身份验证的方法。...

你可以在模板方面知道当前用户是否已通过身份验证:

{%如果user.is_authenticated%} {%endif%}

但是我没有找到获取经过身份验证的用户列表的方法。


问题答案:

与rz的答案一起,你可以查询Session未到期的会话模型,然后将会话数据转换为用户。一旦知道了,就可以将其转换为模板标记,该标记可以在任何给定页面上呈现列表。

(这都是未经测试的,但希望将接近工作)。

提取所有已登录的用户…

from django.contrib.auth.models import User
from django.contrib.sessions.models import Session
from django.utils import timezone

def get_all_logged_in_users():
    # Query all non-expired sessions
    # use timezone.now() instead of datetime.now() in latest versions of Django
    sessions = Session.objects.filter(expire_date__gte=timezone.now())
    uid_list = []

    # Build a list of user ids from that query
    for session in sessions:
        data = session.get_decoded()
        uid_list.append(data.get('_auth_user_id', None))

    # Query all logged in users based on id list
    return User.objects.filter(id__in=uid_list)

使用此功能,你可以制作一个简单的包含模板标签…

from django import template
from wherever import get_all_logged_in_users
register = template.Library()

@register.inclusion_tag('templatetags/logged_in_user_list.html')
def render_logged_in_user_list():
    return { 'users': get_all_logged_in_users() }
logging_in_user_list.html

{% if users %}
<ul class="user-list">
    {% for user in users %}
    <li>{{ user }}</li>
    {% endfor %}
</ul>
{% endif %}

然后,你可以在主页上随意使用它…

{% load your_library_name %}
{% render_logged_in_user_list %}


 类似资料:
  • 问题:我只想从authenticate.getname()中获取/提取用户名/电子邮件...如果可能的话,不要使用解析字符串。 authentication.getname()或principal.getname()值: 在本例中,我只希望获得用户名的值,即butitoy@iyotbihagay.com 因为我只想获得用户名/电子邮件(Butitoy@iyotbihagay.com),而且它返回的

  • 我正在我的Web应用程序中构建聊天功能。我使用jitsi作为我们的聊天服务器。在视频聊天会话中可以有2-4个用户。这些会话将被锁定。Web应用程序将启动聊天,并将控制谁可以加入聊天室。 我试图嵌入jitsi满足内部使用jitsi满足外部API的网页这里列出https://github.com/jitsi/jitsi-meet/blob/master/doc/api.md。 我们的jitsi会议不向

  • 我是Spring安全的新手,我想用数据库验证用户。我已经用jdbc创建了一个登录页面和一个身份验证提供程序,它检查用户是否存在于数据库中。但是我的代码没有这样做的问题是,它允许所有用户登录!我的代码怎么了?谢谢你的帮助。 这是我的安全会议。xml:

  • 我想使用boto3获取访问AWS服务的临时凭据。用例是这样的:我的Cognito用户池中的一个用户登录到我的服务器,我希望服务器代码为该用户提供访问其他AWS服务的临时凭据。 我有一个Cognito用户池,其中存储了我的用户。我有一个Cognito标识池,它不允许未经授权的访问,只允许来自Cognito用户池的用户访问。 下面是我开始的代码: 但是,仅运行这三行代码就会引发异常: 由于我的Cogn

  • 我的代码在这里:代码重新发布是因为我想问一个更直接的问题。如何在未经身份验证的用户和经过身份验证的用户之间切换?我的未经验证的文件似乎已缓存,我使用了以下方法: 在我剩下的api代码之前,它仍然不能工作。谢谢你的帮助 注意:我知道它不起作用,因为我在切换配置/凭据提供程序后立即使用lambda进行调用,并且只有授权用户才能调用此方法。 编辑@behrooziAWS答案: API代码: 完整错误:B

  • 问题内容: 问题: 我们有一个基于Spring MVC的RESTful API,其中包含敏感信息。该API应该是安全的,但是不希望随每个请求一起发送用户凭证(用户/密码组合)。根据REST准则(和内部业务要求),服务器必须保持无状态。该API将由另一台服务器以mashup方式使用。 要求: 客户端使用凭据向(不受保护的URL)发出请求;服务器返回一个安全令牌,该令牌包含足够的信息供服务器验证未来的