如何仅允许特定域名邮箱用户访问站点功能?
修改方案
直接修改模板中的判断条件,加入邮箱域名校验即可,同时处理已登录但不符合域名的用户场景:
{% if user.is_authenticated and user.email.endswith '@example.com' %} <a href="{% url 'quizlist' %}" class="btn btn-secondary btn-lg">Quizzes</a> <a href="{% url 'profile' %}" class="btn btn-secondary btn-lg">Profile</a> <a href="{% url 'logout' %}" class="btn btn-secondary btn-lg mr-2">Log Out</a> {% elif user.is_authenticated %} <!-- 已登录但非指定域名用户,仅显示退出登录按钮 --> <a href="{% url 'logout' %}" class="btn btn-secondary btn-lg mr-2">Log Out</a> {% else %} <div class="d-flex justify-content-center"> <a href="{% url 'register' %}" class="btn btn-primary btn-lg mr-2">Register</a> <a href="{% url 'login' %}" class="btn btn-secondary btn-lg">Log In</a> </div> {% endif %}
关键说明:
- 利用Django模板字符串内置的
endswith方法,直接在模板中校验用户邮箱后缀是否为@example.com - 新增
elif user.is_authenticated分支,避免已登录但不符合域名的用户看到登录注册按钮,仅保留退出登录选项 - 原逻辑仅判断登录状态,现在通过多条件组合实现了指定域名的访问限制
内容的提问来源于stack exchange,提问作者ShreyankGopal
相关产品推荐
相关产品推荐

