如何手动激活用户

时间:2017-06-25 08:52:17

标签: django django-registration

Django 1.11.2

django的登记-终极版== 1.6

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

换句话说,我想做什么: 1)让用户注册并重置密码。 2)站点的管理员将新用户分配给组。具有最小权限的用户只能查看。特殊权限允许编辑,删除等。但是,未经管理员批准,用户必须无法查看任何内容。

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

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

你能在这里给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

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

也就是说,如果您不授予权限,则用户不会拥有权限。因此,如果您实现can_view并将其设置为保护相关模型和视图,那么用户可以登录,但看不到任何您不希望他们访问的内容(方便用户看到她成功登录虽然:))。

评论中的后续问题

可以使用每个视图检查一个全局权限。使用基于类的视图时,我建议扩展LoginRequiredMixin,在IntranetCommonMixin中包含一些其他好东西,并让每个视图将其与一个通用基本视图结合起来。另请参阅my answer here

你不想这样做的唯一原因是,对规则的异常进行编码是很困难的,因为第一个“是”的“对象”获胜。