RESTfu认证与权限
发布时间:2023-12-25 05:31:43 所属栏目:教程 来源:DaWei
导读: 在完成 RESTful Web API 搭建之后,似乎主要工作已经完成。大家仔细想想,还有没遗漏什么?对了,现在的接口任何人都可以访问,试想,一个任何人都能够访问的师生管理系统,如果被别有用心的
在完成 RESTful Web API 搭建之后,似乎主要工作已经完成。大家仔细想想,还有没遗漏什么?对了,现在的接口任何人都可以访问,试想,一个任何人都能够访问的师生管理系统,如果被别有用心的人利用,岂不是会造成一定的隐患?再看周围的一些系统,是不是大多都需要登陆后才能使用,而另外一些系统,不同的用户登陆,操作权限又不同,那这些又是如何实现的呢。这一小节,我们就来介绍在 Django REST framework 中如何实现 RESTful Web API 的认证和权限分配。 1.认证功能的使用 通常,我们可以在设置文件中配置全局默认的认证方案,一旦配置,全局默认采用配置的认证方案 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', # 基本认证 'rest_framework.authentication.SessionAuthentication', # session认证 ) } 另外,我们也可以为不同的视图分别指定不同的认证方案,此时可在视图中通过 authentication_classes指定: from rest_framework.authentication import SessionAuthentication, BasicAuthentication from rest_framework.views import APIView class ExampleView(APIView): authentication_classes = (SessionAuthentication, BasicAuthentication) ... 认证成功,即可获取接口内容,而认证失败,通常会有两种可能的返回值: 401 Unauthorized 未认证; 403 Permission Denied 权限被禁止(配合权限使用)。 2.权限功能的使用 权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。 我们可以在配置文件中设置默认的权限管理类,一旦配置,全局默认采用配置的认证方案: REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) } 如果在全局设置文件中没有配置权限,则采用默认的配置: 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.AllowAny', ) 与认证类似,也可以在视图中通过 permission_classes 属性来设置权限类,如 from rest_framework.permissions import IsAuthenticated from rest_framework.views import APIView class ExampleView(APIView): permission_classes = (IsAuthenticated,) ... 3. Django Rest framework为我们提供的权限: AllowAny:允许所有用户; IsAuthenticated:仅通过认证的用户; IsAdminUser:仅管理员用户; IsAuthenticatedOrReadOnly:认证的用户可以完全操作(增删改查),否则只能读取(查)。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐