加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 行业智能、建站、操作系统、语音技术、区块链!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

RESTfu认证与权限

发布时间:2023-12-25 13:49:12 所属栏目:教程 来源: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:认证的用户可以完全操作(增删改查),否则只能读取(查)。

 

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章