我正在使用Django,DRF和Angular。自从我开始使用我的API以来,我一直在设法将数据从我的数据库连接并检索到Angular。今天突然间,我开始收到401未经授权的错误。在REST_FRAMEWORK下的 settings.py 中,我有:
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
所以起初我以为是因为我从django的管理部分退出了所以我登录但没有改变。在回答这个问题时,我将上面的代码行更改为:
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
在此之后,我现在可以访问数据,API正在返回信息。
问题
设置权限是否有害.AllowAny?这可能会给我带来哪些潜在的问题?此外,任何人都可以向我提供可能的理由,为什么突然间我得到401未经授权的错误。 Fiddler给了我这个额外的信息
{“detail”:“未提供身份验证凭据。”}
答案 0 :(得分:1)
Django REST Framework中的默认权限类描述了您的视图的安全警察。任何视图或answer返回系统信息之外或从用户查询中提供数据并通过序列化程序和模型保存到数据库中。
如果您将ArrayList
设置为DEFAULT_PERMISSION_CLASS
,那么任何用户(也是匿名用户)都可以调用任何未受保护的API视图:允许所有操作。
如果您将限制对专用API部分的访问,则为ViewSet设置权限类(在permissions.AllowAny
子类中定义字段permission_classes
)和单独设置视图(使用修饰符)。
请勿在制作中使用ViewSet
!这不安全!
您必须创建用于检查用户权限的自定义类,或将permissions.AllowAny
转换为DEFAULT_PERMISSION_CLASS
。 ViewSet提供有关权限和权限类的所有信息。