簡體   English   中英

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

[英]How to prohibit back or refresh using django

這是我的代碼:

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

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

但是這種方法不能防止后退,

我做了重要的事情complete (例如游戲中增加的錢)

我不希望用戶刷新頁面或返回到父頁面,

我能做什么 ,

謝謝

一個簡單的想法是使用會話變量,如下所示:

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輸入一次 如果您希望用戶再次輸入,只需取消設置會話變量即可。

我看到幾個選擇:

  1. 您可以在do_something()之后再次重定向:

     def complete(request): do_something() return MobileResponseRedirect('/battle/complete_msg/') def complete_msg(request): return MobileResponse(html) 
  2. 如果仍然擔心(特別是擔心用戶作弊系統),則應在服務器上設置某種標志,表明該操作已完成。 很難說如何在不了解您的應用程序的情況下准確地做到這一點。 一個示例可能是僅在用戶執行了某些操作(例如,打敗某個關卡)並記錄該操作已發生的情況下,才允許執行此完整操作,以便該完整操作只能在一次關卡操作中發生一次-行動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM