如何获取当前用户ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取当前用户ID相关的知识,希望对你有一定的参考价值。

参考技术A

1、按组合键Win键+R调出运行,然后输入control,并点击确定,打开控制面板。如图,依次点击红框内标注的的内容即可查看。

2、windowsxp系统点击开始菜单,注销后面的就是你当前的用户名。

3、同时按住 ctrl shift esc 键,打开任务管理器,最右边“用户”选项卡显示当前用户名。

4、windows10点击开始菜单,鼠标移动到如图所示的人型图表上即可显示当前用户名。

Django:如何获取当前用户的组 ID

【中文标题】Django:如何获取当前用户的组 ID【英文标题】:Django: how to get the current user's group id 【发布时间】:2013-11-22 02:36:11 【问题描述】:

我想知道如何在views.py 中获取当前用户ID?此外,如何获取当前用户的组 ID?我是否必须使用用户 ID 直接查询数据库?非常感谢。

【问题讨论】:

【参考方案1】:

视图函数将request 作为其参数之一。假设您使用的是内置的身份验证应用程序,当前用户(如果有)将是 request.user。如果会话没有登录用户,这可能是 anonymous user 的表示 - 如果您不想允许,请参阅 docs。

用户可以属于多个组,所以我不太清楚您所说的“组 ID”是什么意思。用户组可用作标准的多对多字段,如request.user.groups。这是一个管理器对象,因此您可以对其应用过滤器等 - 获取它们,request.user.groups.all()

【讨论】:

谢谢!我需要组 id,因为我已经扩展了组模型,所以我想我需要组 id 来获取字段值。但是用request.user.groups.all(),好像只返回组名... groups.all() 返回实际的 Group 对象。如果你 print 它,他们将使用他们的名字来表示,但 groups.all()[0].somefield 也应该工作。除非您对模型的扩展改变了这种关系。如果是这种情况,您需要在问题中显示您的自定义模型代码。 嘿伙计,我还有一个问题:***.com/questions/19898284/…你不帮我吗?【参考方案2】:
user = auth.get_user(request)
group = request.user.groups.values_list('name', flat=True).first()

完美运行!

所以你可以用 'id' 替换 'name' 来获取组的 ID

【讨论】:

【参考方案3】:

如果在您的用例中每个用户只有一个组,您可以使用request.user.groups.get() 获取该组。 objects.get() 的工作方式有点类似于 objects.all()[0]。因此,当该用户有多个组时,它将失败。

https://github.com/django/django/blob/master/django/db/models/query.py

def get(self, *args, **kwargs):
    """
    Performs the query and returns a single object matching the given
    keyword arguments.
    """
    clone = self.filter(*args, **kwargs)
    if self.query.can_filter():
        clone = clone.order_by()
    clone = clone[:MAX_GET_RESULTS + 1]
    num = len(clone)
    if num == 1:
        return clone._result_cache[0]
    if not num:
        raise self.model.DoesNotExist(
            "%s matching query does not exist." %
            self.model._meta.object_name)
    raise self.model.MultipleObjectsReturned(
        "get() returned more than one %s -- it returned %s!" % (
            self.model._meta.object_name,
            num if num <= MAX_GET_RESULTS else 'more than %s' % MAX_GET_RESULTS
        )
    )

如果您在对用户进行分类之后,只需扩展用户模型并设置外键字段即可。在这方面使用权限组对我来说似乎不是一个好方法。

【讨论】:

【参考方案4】:

如果你用下面方法的断点调试,

@csrf_exempt
def auth_check(request):
    return HttpResponse(str(request.user)) # <- breakpoint

可以看到请求中有user.groups

如上图高亮部分所示,可以找到用户所属的组名。

您可以轻松获取用户组ID

request.user.groups.name

【讨论】:

以上是关于如何获取当前用户ID的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms如何获取当前登录用户的Id等信息?

如何在 Flutter 中从 Firebase 获取当前用户 ID

使用 ASP.NET 表单身份验证时如何获取当前登录用户的用户 ID?

如何使用 C# 通过他的 ID 获取当前登录的用户?

如何使用 Spring Security 和 Thymeleaf 获取当前登录用户的 ID

如何使用 Vuejs 和 Laravel 获取当前经过身份验证的用户 ID?