Django 1.8 Auth/Registration Redux - 如何使 @login_required 和 .is_authenticated() 检查仅在用户处于事件状态时通过?

标签 django authentication django-registration

我正在使用Django Registration Redux用于用户激活。据我了解,用户模型中的“Active”字段跟踪用户是否通过 Django Registration Redux 激活电子邮件激活了他们的帐户,但没有做太多其他事情。这是正确的吗?

如果是这样,我如何继续使用内置的 Django 身份验证功能来检查用户是否已登录并且他们是否已激活其帐户?

谢谢!

最佳答案

事件标志可以在 Django Registration Redux 之外设置。管理员可以在 Django 管理中对其进行切换(例如从事件更改为非事件)。

例如 Django's authentication docs我可以看到:

  1. 只有活跃用户才可以reset their password
  2. 内置AuthenticationForm只允许活跃用户登录。

可能还有其他地方也使用事件标志。

login_required 装饰器不检查事件标志。请参阅this question检查用户是否已登录且处于事件状态的方法。

如果您有自定义用户模型,则可以重写 is_authenticated() 方法来检查 is_active 标志。否则,您可以在 View 或模板中执行这两项检查

{% if user.is_active and user.is_authenticated %}

关于Django 1.8 Auth/Registration Redux - 如何使 @login_required 和 .is_authenticated() 检查仅在用户处于事件状态时通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561314/

相关文章:

vue.js - 如何在 Nuxt 和 Vue SSR Web 应用程序中免除特定路由/页面的登录/授权?

php - Silex是否支持自定义用户角色

使用 django.contrib.messages 重定向 Django 注册激活

python - Django url中的对象ID

python - Django 模型过滤

android - 我可以自定义 firebase OTP 数字(默认 6 到 4)吗?

python - Django 管理设置

django-templates - Django CMS页面标题未呈现

python - 为什么要为自己设置一个字典浅拷贝?

django-paypal 将货币更改为欧元