gpt4 book ai didi

python - Django 如何为每个 View 指定不同的身份验证方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:54 26 4
gpt4 key购买 nike

和标题差不多。

我使用的是 Django 1.11,我被要求将 CAS 设置为某些 View 的身份验证方法,并将其余部分保留在 Django 模型身份验证之后或不进行身份验证。

我正在尝试将 django_cas_ng 集成到我的项目中以重定向到 CAS 服务器进行身份验证,但我不知道如何区分 View 函数之间的身份验证方法。 Django 支持多个身份验证后端,甚至完全自定义的后端,但我想知道是否可以为每个 View 按名称指定单独的身份验证方法(例如使用 View 装饰器)。

Django 允许显式指定不同的数据库和缓存,但是有没有办法(或应用程序)为身份验证后端启用相同的数据库和缓存?

最佳答案

Django 默认身份验证:

from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
class AnyView(AnyViewClass):
...

您可以用于auth-views:

from rest_framework.decorators import permission_classes, authentication_classes
from rest_framework.authentication import BasicAuthentication
from rest_framework.permissions import IsAuthenticated

@authentication_classes((BasicAuthentication,))
@permission_classes((IsAuthenticated,))
class AnyView(APIView):
...

对于任何其他身份验证,例如 oauth2:

from oauth2_provider.decorators import protected_resource

@protected_resource()
class AnyView(APIView):
...

为了避免复制粘贴,您可以创建两个具有不同身份验证类型的类,并将它们用作其他类的父类。

关于python - Django 如何为每个 View 指定不同的身份验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037055/

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