我用的是Django,DRF和角。自从我开始使用API以来,我一直在设法将数据从数据库连接和检索到Since。今天突然间,我开始收到401个未经授权的错误。在“我的settings.py In REST_FRAMEWORK”中,我有以下内容:
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),所以一开始我以为这是因为我是从django的管理部分登录的,所以我登录了,但是没有什么改变。为此,我将上面的代码行更改为:
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),在此之后,我现在可以访问数据,API可以很好地返回信息。
问题
设置permissions.AllowAny有什么害处吗?这会给我带来什么潜在的问题?此外,是否有人可以向我提供可能的原因,为什么我突然得到了401个未经授权的错误。Fiddler给了我额外的信息
{“详细信息”:“未提供身份验证凭据”}
发布于 2017-02-19 17:48:41
Django REST Framework中的默认权限类描述视图的安全警察。任何视图或ViewSet都会返回系统信息或从用户查询中提供数据,并通过序列化器和模型保存到数据库中。
如果将DEFAULT_PERMISSION_CLASS设置为permissions.AllowAny,那么任何用户(也是匿名用户)都可以调用任何不受保护的视图:所有操作都是允许的。
如果要限制对专用API部件的访问,那么分别为ViewSet(在您的permission_classes子类中定义字段ViewSet )和视图(使用装饰器)设置权限类。
不要在生产中使用permissions.AllowAny !不安全!
必须创建用于检查用户权限的自定义类,或将DEFAULT_PERMISSION_CLASS转换为permissions.DjangoPermissions。正式文件提供有关权限和权限类的所有信息。
https://stackoverflow.com/questions/42329178
复制相似问题