问题标签 [django-authentication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2658 浏览

python - Django:向 User 类添加一个属性。在运行时和 UserManager.create_user 更改它

由于各种复杂的原因[1],我需要向 Django User 类添加额外的属性。

我既不能使用 Profile 也不能使用“继承”方式来做到这一点。(如在 Django 中使用自定义字段扩展用户模型

所以我一直在做的是在我的 local_settings 文件中包含 User 类。并在那里添加属性。

或许令人惊讶的是,这似乎在许多情况下都有效。但不是当我从 UserManager.create_user() 创建一个新用户时。所以我需要修补 UserManager.create_user() 方法的替代方法。查看源代码(在 contrib.auth.models.py 中),我发现它用于创建用户的类保存在名为 UserManager.model 的属性中,而不是直接引用。

这条线是这样的:

user = self.model(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)

问题是这个 self.model(我假设它包含对 User 类的引用)似乎不是我的修补版本。

那么,有谁知道在 UserManager 的情况下这个 self.model 是在哪里设置的?以及我是否正确假设此时代码尚未通过 local_settings 所以我对 User 类的补丁不存在?如果有更好的地方来修补课程?

干杯

菲尔

[1] 满足好奇心。我需要让 User 类使用数据库中不同的现有表,该表具有额外的字段和约束。

更新:为了将来参考,看起来代理模型是 Django 支持我需要的方式: http: //code.djangoproject.com/ticket/10356

0 投票
2 回答
567 浏览

python - django 和 appengine 模型类之间的代码重用

我创建了一个自定义 django.auth 用户类,它与 Google Appengine 一起使用,但它涉及大量复制代码(实际上是每个方法)。

不可能创建子类,因为 appengine 和 django 有不同的数据库模型,它们有自己的元类魔法。

所以我的问题是:有没有一种优雅的方法可以从 django.auth 的 User 类中复制方法?

0 投票
3 回答
590 浏览

django - 没有本地站点帐户的 django 中的 OpenID

我正在一个 django 站点上工作,我希望身份验证部分的工作方式与 Stack Overflow 的工作方式完全相同。一个新用户来到该站点,他们单击“创建新帐户”,选择他们的 OpenID 提供商,进行验证,然后为他们创建一个帐户,使用“openiduser4356”或其他用户名。然后,用户可以进入首选项并将用户名更改为他们想要的任何内容。我根本不想要任何类型的本地帐户注册。

我几乎一整天都在让 django-authopenid 工作,似乎这个插件工作的唯一方法是将 OpenID 身份添加到已经存在的帐户中。哎呀,当你安装了 django-authopenid 时,你甚至无法运行你的网站,除非你也安装了 django-registration ......

在我再花一天时间与这件事搏斗以尝试让它做我想做的事情之前,我宁愿直接知道这种事情是否可能/一个好主意。我注意到那里还有一些其他用于 django 的 OpenID 插件。他们中的任何一个人在做我想做的事情方面做得更好吗?

0 投票
2 回答
416 浏览

django - 如何在 Django 登录表单中预设用户名?

在对现有解决方案不满意后,我为 Django 编写了一个 OpenId 提供程序。

如果现在有人想在某处以http://tejp.de/users/abc/身份验证自己并需要为此登录,我想显示登录表单,用户名预设为“abc”。像这样的标准函数似乎没有为此提供任何参数,我也看不到在手动redirect_to_login重定向到登录视图时如何预设该值。django.contrib.auth.views.login此外,似乎没有简单的方法可以通过模板获取附加参数值,以便我可以在那里插入预设值。

有没有办法在登录表单中自动填写用户名?如果可能的话,我想为此使用正常的登录视图,而不是复制和粘贴所有登录代码并在必要的更改中进行编辑。

0 投票
15 回答
179996 浏览

python - 让 Django 提供可下载文件

我希望网站上的用户能够下载路径被隐藏的文件,因此无法直接下载。

例如,我希望 URL 是这样的:http://example.com/download/?f=somefile.txt

在服务器上,我知道所有可下载的文件都位于文件夹中/home/user/files/

有没有办法让 Django 提供该文件以供下载,而不是试图找到一个 URL 并查看来显示它?

0 投票
5 回答
10067 浏览

django - 如何使 Django permission_required 装饰器不将已登录的用户重定向到登录页面,但显示一些消息

如何使 Django permission_required 装饰器不将已登录的用户重定向到登录页面,而是显示一些诸如权限不足的消息?

谢谢你。

0 投票
1 回答
2571 浏览

django - 当为 Django 站点使用子域时,如何在 localhost 上的子域之间共享 django 登录?

我想让相同的用户会话跨越:site.com
sub1.site.com
sub2.site.com

如何在 Django 中执行此操作?使用默认的 auth 用户包,它似乎要求用户每次使用不同的会话登录到所有 3 个站点。他们如何共享相同的登录 cookie 和 session-id?

更新:在 settings.py 中使用 SESSION_COOKIE_DOMAIN 值似乎适用于生产站点,但它不适用于我在 localhost/dev 服务器上。你如何让它为 localhost 子域工作?当我将 SESSION_COOKIE_DOMAIN 更改为生产网站名称或“.localhost”时,django auth 登录完全停止工作(我无法登录,没有在 localhost 上创建 cookie。)

0 投票
4 回答
8205 浏览

django - (Django) 在不同域上的两个站点之间共享身份验证

我有两个网站,分别是 foo.com 和 bar.com,它们都是基于 Django 的。主要注册发生在 foo.com 上(我希望主要用户 db 在这里),我希望发生三件事:

1) 登录 foo.com 的用户无需再次登录即可自动访问 bar.com

2) 直接登录 bar.com 的用户是针对 foo.com 用户 db 进行身份验证的。

3) 用户无需直接在 bar.com 注册。

我怎样才能做到这一点?如果它大大简化了事情,我可以让 bar.com 成为 foo.com 的子域(例如 bar.foo.com),但它们必须是单独的站点。

0 投票
2 回答
2426 浏览

django - django - 限制用户只能编辑自己的信息

我正在玩 django 并构建了一个小应用程序,用户可以在其中通过 url http:///localhost:8000/username/info/访问他们的信息。我想添加通过http:///localhost:8000/username/info/edit/编辑该信息的功能,但也想确保当前登录的用户(使用 django.contrib.auth)只能访问他的信息。我通过在视图中执行以下操作来完成此操作(视图 args 中的用户名是从 url 捕获的):

所以,很明显,我不希望用户“johnny”通过简单地将浏览器指向/jimmy/info/edit/来编辑属于用户“jimmy”的信息。以上工作,但我担心的是,就安全性而言,我在这里遗漏了一些东西。这是解决这个问题的正确方法吗?谢谢。

0 投票
3 回答
362 浏览

django - 我如何创建一个屏幕来批量创建一堆 Django auth 用户?

我想创建一个帮助屏幕,它可以在我的网站上创建一堆 Django auth 用户,并让这些帐户的设置方式与通过 Django auth GUI 注册一个一个地完成的方式完全相同。我必须在我的视图中使用来自 Django auth 的哪些方法来完成此操作?