如何手动激活用户

How to activate users manually

Django 1.11.2

django-registration-redux==1.6

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

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

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

嗯,这个好像比较麻烦。 admin 中的 "Active" 属性要优雅得多。但是当用户确认 his/her 电子邮件时 "Active" 会自动设置为 True。

你能给我一个建议吗?

虽然很诱人,但永远不要使用 is_active 来拒绝权限。该标志相当于 "deleting a user"。这也意味着用户无法登录(使用默认身份验证后端)。所以它不是 authorization 守卫,而是 authentication 守卫。

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

来自评论的后续问题

可以使用一个针对每个视图检查的全局权限。当使用基于 class 的视图时,我建议扩展 LoginRequiredMixin,将一些其他好东西塞进 IntranetCommonMixin 中,并让每个视图将其与通用基础视图之一结合起来。另见

您不想这样做的唯一原因是很难在规则上编写例外代码,因为第一个 "object" 表示 "yes",获胜。