【问题标题】:permissions.AllowAny DRF权限.AllowAny DRF
【发布时间】:2023-03-08 01:48:01
【问题描述】:

我正在使用 Django、DRF 和 Angular。自从我开始研究我的 API 以来,我一直在设法将数据从我的数据库连接和检索到 Angular。今天突然间我开始收到 401 未经授权的错误。在我的 settings.py 下 REST_FRAMEWORK 我有这个:

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),

所以一开始我以为是因为我退出了 django 的管理部分所以我登录了但没有任何改变。对此,我将上面的代码行更改为:

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),

在此之后,我现在可以访问数据并且 API 可以正常返回信息。

问题

设置 permissions.AllowAny 有什么害处吗?这可能使我面临哪些潜在问题?此外,任何人都可以向我提供可能为什么我突然收到 401 未经授权的错误的原因。 Fiddler 给了我这些额外的信息

{"detail":"未提供身份验证凭据。"}

【问题讨论】:

    标签: angularjs django django-admin django-rest-framework


    【解决方案1】:

    Django REST Framework 中的默认权限类为您的视图描述了安全策略。任何视图或ViewSet 都会返回您的系统信息之外或从用户查询中提供数据并通过序列化程序和模型保存到数据库中。

    如果您将DEFAULT_PERMISSION_CLASS 设置为permissions.AllowAny,则任何 用户(也是匿名用户)可以调用任何未受保护的API 视图:所有操作都是允许的。

    如果您将限制对专用 API 部分的访问,则分别为 ViewSet(在您的 ViewSet 子类中定义字段 permission_classes)和视图(使用装饰器)设置权限类。

    不要在生产环境中使用permissions.AllowAny!它不安全!

    您必须创建自定义类来检查用户权限或将DEFAULT_PERMISSION_CLASS 转换为permissions.DjangoPermissionsOfficial documentation 提供有关权限和权限类的所有信息。

    【讨论】:

    • 感谢您提供的信息。虽然我还需要了解更多的东西,但你给了我一个开始。
    • AllowAny 如何不安全?
    猜你喜欢
    • 2016-03-29
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2019-07-29
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多