gpt4 book ai didi

Django 中间件 + URL

转载 作者:行者123 更新时间:2023-12-01 09:11:21 24 4
gpt4 key购买 nike

中间件是否可以检查 url 中是否有值,例如图像 ID(“/image/152/”),如果是,则进行一些检查以确保当前用户有权查看该图像和如果不重定向到另一个网址?

我必须为我正在处理的这个站点滚动我自己的权限,我不想用相同的代码阻塞我为整个站点编写的几乎每个 View ,所以我认为中间件是一个好主意,但我不知道如何去做。

最佳答案

是的,这是可能的。 Django middleware docs for process_request表明:

def process_request(self, request)

request is an HttpRequest object. This method is called on each request, before Django decides which view to execute.

process_request() should return either None or an HttpResponse object. If it returns None, Django will continue processing this request, executing any other middleware and, then, the appropriate view. If it returns an HttpResponse object, Django won't bother calling ANY other request, view or exception middleware, or the appropriate view; it'll return that HttpResponse.


HttpRequest对象有一个 path属性将为您提供请求的 URL。

但是,如果您愿意,请注意,您还可以扩展 Django 的身份验证后端系统,以根据任意条件(例如您的手动权限方案)使用权限填充请求中的用户。这样,您可以利用默认的身份验证装饰器( @permission_required@user_passes_test ),其他应用程序/管理站点也将能够尊重您的权限。创建的用户对象和权限不需要驻留在 Django 的用户/权限表中,并且可以在登录时虚拟创建;我在这方面取得了相当大的成功。

Writing an authentication backend如果这很有吸引力。

关于Django 中间件 + URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/753909/

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