如何禁止使用djang返回或刷新

2024-09-30 08:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

def to_complete(request):
    return MobileResponseRedirect('/battle/complete/')

def complete(request):
    do_something()
    return MobileResponse(html)

但这种方法不能阻止你回来

我在complete中做了一件重要的事情(比如在游戏中增加金钱)

我不希望用户刷新页面或返回到父页面

我能做什么

谢谢


Tags: to方法密码returnrequestdefhtml页面
2条回答

一个简单的想法是使用会话变量,如下所示:

def to_complete(request):
    if request.session.has_key("complete_pending"):
        return HttpResponseForbidden()
    request.session["complete_pending"] = True
    return MobileResponseRedirect('/battle/complete/')

def complete(request):
    if not request.session.get("complete_pending", False):
        return HttpResponseForbidden()
    request.session["complete_pending"] = False
    do_something()
    return MobileResponse(html)

这种方法允许用户在to_completecomplete中只输入一次。如果希望用户再次输入,只需取消设置session变量。你知道吗

我看到了几个选择:

  1. 你可以在做某事()后再次重定向:

    def complete(request):
        do_something()
        return MobileResponseRedirect('/battle/complete_msg/')
    
    def complete_msg(request):
        return MobileResponse(html)
    
  2. 如果仍然担心(特别是如果担心用户作弊系统),您应该在服务器上设置某种标志,表明操作已经完成。很难说,如果你对你的应用程序了解得更多的话,如何才能做到这一点。一个例子是,如果用户已经做了一些动作(例如,打败一个关卡),并且记录了动作已经发生,那么这个完整的动作只能发生一次。

相关问题 更多 >

    热门问题