1

有些 URL 仅用于在操作成功后重定向用户。(例如,提交反馈后的感谢页面)。

问题是这些页面可以直接访问。

有没有办法防止这种情况?

谢谢

4

4 回答 4

3

URL 由视图处理,因此请确保视图仅在它所做的最后一件事是对登录用户的成功操作时才满意。否则引发 Http404。

只需在视图中检查用户的会话变量即可。逻辑类似于:

shop.html:用户点击“post”来购买.html

buy.html 视图向用户收费,在会话中设置“刚买了东西”,重定向到thanks.html

查看Thanks.html 检查“刚刚购买的东西”会话变量,如果设置为404,则将其清除,并在成功时为响应呈现模板。

于 2012-08-13T22:26:57.217 回答
1

我建议这样做的消息框架

于 2012-08-13T22:48:16.230 回答
1

如果用户不提供特定的 GET 参数,您可以在视图中执行一些非常简单的操作,例如重定向:

if not request.GET.get('show', False):
     # do redirection
else:
     # render the page

所以该 URL 只能通过/my-url/?show=true

于 2012-08-13T23:49:41.983 回答
0
def get_referer(request):
    referer = request.META.get('HTTP_REFERER')
    if not referer:
        return None
    return referer

然后在任何视图中:

def my_view(request):
    if not get_referer(request):
        raise Http404
    return render(request, 'sample.html', {})

在这里,我们假设如果没有引用者(无),则表示该人在浏览器中输入了 URL。

于 2021-04-08T22:41:58.890 回答