gpt4 book ai didi

python - 如果用户位于特定网址且未通过测试,则阻止用户进入另一个 View

转载 作者:行者123 更新时间:2023-11-30 22:58:34 25 4
gpt4 key购买 nike

我正在开发一个 Django 项目,在该项目中,我需要阻止用户进入另一个 View ,如果

  1. 他在特定的页面上
  2. 未通过测试

如果他在特定页面上。如果用户在另一个页面但没有通过测试,他将被允许去任何地方。

例如,如果我有三个选项卡 Tab1Tab2Tab3。如果用户在 Tab2 上并且未通过测试 A,则他无法继续 Tab1Tab3。但是,如果他在 Tab1Tab3 上,但没有通过该测试,他仍然可以转到 Tab2Tab3.当用户单击 Tab1 时,我想检查他是否在 Tab2 上。如果他不这样做,他将被允许离开。但是如果他在 Tab2 上,我将检查用户是否通过测试。如果他通过了测试,他将被允许离开。否则不准去。

我尝试使用 @user_passes_test 装饰器,但它以用户作为参数,我无法获取当前网址。有没有其他方法可以做到这一点或我可以使用任何其他装饰器?或者我必须编写自己的自定义装饰器?

最佳答案

您可以通过创建中间件来解决它,
在中间件上,只需通过 request.META.get('HTTP_REFERER',None) 检查用户的转发 URL。
如果用户尝试测试存在于数据库中,则检查测试条目,然后传递或返回错误页面或您想要的内容。

def process_response(self, request, response):
referer_path = str(request.META.get('HTTP_REFERER',None))
request_path = str(request.path)
match_pattern = r"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"

if re.search(match_pattern, request_path) and request_path.__contains__('/lms/media/video/articulate/') and response.status_code == 200:
#what you want logic

更多详情请关注https://docs.djangoproject.com/en/1.9/topics/http/middleware/

关于python - 如果用户位于特定网址且未通过测试,则阻止用户进入另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36128422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com