gpt4 book ai didi

python - 将所有 View 限制为 Django 中经过身份验证的用户

转载 作者:行者123 更新时间:2023-12-03 20:23:35 26 4
gpt4 key购买 nike

我是 Django 的新手,我正在开发一个项目,该项目有一个登录页面作为其索引和一个注册页面。其余页面都必须限制为登录用户,如果未经身份验证的用户试图访问他们,他/她必须重定向到登录页面。

我看到了 @login_required装饰器会使单个 View 仅限于登录用户,但有没有更好的方法来限制所有 View 并且只有少数 View 可供未经身份验证的用户使用?

最佳答案

你可以写一个中间件:

from django.contrib.auth.decorators import login_required

def login_exempt(view):
view.login_exempt = True
return view


class LoginRequiredMiddleware:
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
return self.get_response(request)

def process_view(self, request, view_func, view_args, view_kwargs):
if getattr(view_func, 'login_exempt', False):
return

if request.user.is_authenticated:
return

# You probably want to exclude the login/logout views, etc.

return login_required(view_func)(request, *view_args, **view_kwargs)

您将中间件添加到您的 MIDDLEWARES列出并装饰您不想使用 login_exempt 进行身份验证的 View .

关于python - 将所有 View 限制为 Django 中经过身份验证的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48407790/

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