首页 > 解决方案 > 限制匿名用户可以在 Django 中查看的页面

问题描述

我正在创建一个包含大约 7 个页面的流程的网站。如果用户有一个看起来像这样的特定 url,则用户只能导航到流的 page1。

domain.com/flow/home/uid=123

在我的模型中检查 UID 以查看它是否存在,如果存在,他们可以查看正确的 page1。如果它不存在,那么它们将被重定向到另一个页面。我想确保他们可以导航到 page2,但前提是他们被允许。我有 2 个想法,不确定是否是正确的方法,或者是否存在另一种更好的方法。

  1. 将请求变量设置为“允许”并在每个页面上检查它。如果未设置,则将它们重定向回主页。

  2. 在 URL 中传递 uid 并确保它在每个页面上都有效。

我倾向于选项 1,因为它更容易/更清洁,但我想检查是否存在任何其他解决方案。

标签: django

解决方案


您可以创建自定义用户模型,并且在那里您可以拥有一个允许的属性。然后检查 request.user.allowed 条件是否继续到 page2。 https://docs.djangoproject.com/en/3.0/topics/auth/customizing/


推荐阅读