【问题标题】:How to activate users manually如何手动激活用户
【发布时间】:2017-06-25 08:52:16
【问题描述】:

Django 1.11.2

django-registration-redux==1.6

我正在建立一个 Intranet 网站。而且我想控制自己用户是否活跃。在 Django admin 中有这样的可能性。但是当新注册的用户确认他/她的电子邮件时,“活动”属性会自动设置为 True。

换句话说,我想做的是: 1)让用户注册和重置密码。 2) 站点管理员将新用户分配给一个组。具有最低权限的用户只能查看。特殊权限允许编辑、删除等。但未经管理员批准,用户甚至不能查看任何内容。

现在我计划为每个模型组织 can_view 权限。以上两个条件将通过将用户分配到一个组来执行。

嗯,这似乎相当麻烦。 admin 中的“Active”属性更加优雅。但是当用户确认他/她的电子邮件时,“活动”会自动设置为 True。

你能给我一个建议吗?

【问题讨论】:

  • 你为什么要处理这么复杂的库。如果你从头开始,控制行为真的很容易,而且很容易实现。
  • 对不起,我无法理解你的想法。什么复杂性?我不是从头开始写所有东西。我将使用 django-registration-redux。但是在那种激活算法的情况下,那里实现的东西不太适合我。
  • 从复杂性来看,我的意思是如果您从头开始拥有一切而不是使用 dango 注册 redux,您将对流程有更多的控制。
  • 我不认为。编写许可很简单。它确实添加了一些代码,但不会增加复杂性。而编写注册并不那么容易。
  • 编写带有电子邮件验证的注册太容易了。它不需要超过 100 行代码。

标签: django django-registration


【解决方案1】:

虽然很诱人,但切勿使用is_active 拒绝权限。该标志相当于“删除用户”。这也意味着用户无法登录(使用默认身份验证后端)。所以它不是授权守卫,而是身份验证守卫。

也就是说,如果您不授予权限,用户就没有权限。所以如果你实现can_view并设置它来保护相关的模型和视图,那么用户可以登录,但看不到你不希望他们看到的任何东西(虽然方便用户看到她成功登录:) )。

来自 cmets 的后续问题

使用每个视图检查的一个全局权限很好。当使用基于类的视图时,我建议扩展LoginRequiredMixin,将一些其他的好东西塞进IntranetCommonMixin,并让每个视图与一个通用的基本视图结合起来。另见my answer here

您不想这样做的唯一原因是,很难在规则上编写异常代码,因为第一个说“是”的“对象”获胜。

【讨论】:

  • 谢谢你,梅尔文。你能不能再给我一点建议。现在我知道如果用户被授予 can_view,他们可以看到任何东西。到目前为止,我不打算改变这一点。在这种情况下,我可以只组织一个 can_view 权限。像'home.can_view' 并检查网站上的每个视图。这是一个好主意还是应该为每个模型创建特殊的 can_view 权限?
猜你喜欢
  • 1970-01-01
  • 2016-08-01
  • 2017-01-06
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多