问题标签 [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 投票
2 回答
5301 浏览

django-authentication - django auth - has_perm 在权限列表为空时返回 True

我想知道为什么此代码部分会打印出以下内容:

如果所有权限的列表为空,我希望 request.user.has_perm('bug_tracking.is_developer') 返回 false!?

0 投票
3 回答
1726 浏览

django - django:来自 django.contrib.auth 的测试失败

当我运行我的 django 测试时,我得到以下错误,这些错误不在我的测试套件之外:

谁能解释我,我做错了什么或者我应该设置什么来通过这些测试?

0 投票
1 回答
297 浏览

django - Refactoring a custom User model to user UserProfile: Should I create a custom UserManager or add user.get_profile() dozens of times?

I have been refactoring an app that had customized the standard User model from django.contrib.auth.models by creating a UserProfile and defining it with AUTH_PROFILE_MODULE.

The problem is the attributes in UserProfile are used throughout the project to determine what the User sees.

I had been creating tests and putting in this type of statement repeatedly:

This is tedious and I'm now wondering if I'm violating the DRY principle.

Would it make more sense to create a custom UserManager that automatically loads the UserProfile data when the user is requested.

I could even iterate over the UserProfile attributes and append them to the User model. This would save me having to update all the references to the custom model attributes that litter the code.

Of course, I'd have to reverse to process for to allow the User and UserProfile models to be updated correctly.

Which approach is more Django-esque?

0 投票
13 回答
20892 浏览

django - django 的 auth_user.username 可以是 varchar(75) 吗?那怎么可能呢?

运行 alter tableauth_user以使其username适合varchar(75)电子邮件有什么问题吗?如果有的话,那会破坏什么?

如果您要更改auth_user.username为在varchar(75)哪里需要修改django?只是将源代码中的30更改为75的问题吗?

或者在这个领域是否有其他验证需要更改或这样做会产生任何其他影响?

有关这样做的原因,请参阅下面与 bartek 的评论讨论。

编辑:几个月后回顾这一点。对于不知道前提的人:一些应用程序没有要求或不希望使用用户名,它们仅使用电子邮件进行注册和身份验证。不幸的是,在 django auth.contrib 中,用户名是必需的。您可以开始将电子邮件放在用户名字段中,但该字段只有 30 个字符,并且电子邮件在现实世界中可能很长。可能比这里建议的 75 字符更长,但 75 字符可容纳大多数正常的电子邮件地址。该问题针对的是基于电子邮件身份验证的应用程序遇到的这种情况。

0 投票
6 回答
51647 浏览

django - Django 的 self.client.login(...) 在单元测试中不起作用

我通过两种方式为我的单元测试创​​建了用户:

1)为“auth.user”创建一个大致如下所示的夹具:

我省略了看似不重要的部分。

2)在setUp函数中使用'create_user'(尽管我宁愿将所有东西都保留在我的fixtures类中):

请注意,两种情况下的密码都是 simpson。

我已经验证此信息一次又一次地正确加载到测试数据库中。我可以使用 User.objects.get 获取用户对象。我可以使用“check_password”验证密码是否正确。用户处于活动状态。

然而,self.client.login(username='homer', password='simpson') 总是失败。我很困惑为什么。我想我已经阅读了与此相关的每一个 Internet 讨论。有人可以帮忙吗?

我的单元测试中的登录代码如下所示:

谢谢。

0 投票
4 回答
19364 浏览

django - 在每个页面上放置一个 django 登录表单

如果用户未登录,我希望登录表单(来自 django.contrib.auth 的 AuthenticationForm)出现在我网站的每个页面上。当用户登录时,他们将被重定向到同一页面。如果有错误,错误将显示在与表单相同的页面上。

我想您需要一个上下文处理器来为每个模板提供表单。但是,那么您还需要每个视图来处理发布的表单吗?这是否意味着您需要创建一些中间件?我有点失落。

有没有一种公认的方式来做到这一点?

0 投票
4 回答
890 浏览

django - django设计问题:扩展用户使用户无法登录

我正在开发的网站涉及教师创建学生对象。教师可以选择让学生可以登录网站(查看日历等),或者教师可以选择仅将学生对象用于记录保存而不允许学生登录。在学生创建中表单中,如果教师提供用户名和密码,它应该创建第一种对象 - 可以登录的对象,即常规用户对象。如果教师没有提供用户名/密码,则应创建第二种类型。另一个要求是教师应该能够稍后进入并将未登录的学生更改为其他类型。为这种情况设计的最佳方法是什么?子类用户并使用户名和密码不需要?这还会影响什么?

编辑: 我最终使用了 User.set_unusable_password()。这是代码 - 我省略了其他表格等,我也在我的视图中使用:

形式

请注意,表单中不需要用户名和密码。

看法

在编辑学生的视图中(可能会与 create_student 视图相结合)我有这个用于 GET:

在 POST 中,如果教师提交了新的用户名和有效密码,我将在 User 实例上设置它们。

感谢大家的想法。

0 投票
5 回答
38129 浏览

django - 手动登录没有密码的用户

我希望您能帮助我找出不使用密码实现手动(服务器端启动)登录的最佳方法。让我解释一下工作流程:

  • 用户注册
  • 谢谢!带有激活链接的电子邮件已发送 blablabla
  • (帐户现在存在但标记为未启用)
  • 用户打开电子邮件,点击链接
  • (帐户已启用)
  • 谢谢!您现在可以使用该网站

我要做的是在用户单击电子邮件链接后登录用户,以便他可以立即开始使用该网站。

我不能使用他的密码,因为它在数据库中加密,是编写自定义身份验证后端的唯一选择吗?

0 投票
1 回答
2976 浏览

django - Django 在哪里存储 auth 的超级用户/密码/电子邮件数据?

运行 syncdb 并创建一个 su 后,记录在哪里?Settings.py 似乎没有改变。

0 投票
2 回答
756 浏览

django - Django 身份验证

在我的 base.html 文件中,我使用 的是 Here,即使用户已登录,也会显示登录按钮。
{% if user.is_authenticated %}
<a href="#">{{user.username}}</a>
{% else %} <a href="/acc/login/">log in</a>

现在,当我单击log in链接时,它会显示用户名以及正常的登录视图,表示用户已登录。

那么,怎么了?