当前位置:   article > 正文

django REST framework 中的认证和权限_authentication_classes = [sessionauthentication]

authentication_classes = [sessionauthentication]
  • 认证方式一般来说有三种
  • 1 传统的认证方式,客户端每次访问都要带上用户名和密码,这种认证方式不安全。
  • 2.session 认证 ,客户端访问带上服务端发给的session_id 。
  • 3.token 认证。

django REST framework 的认证方式的配置

  • 1 在全局中配置。
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',   
        'rest_framework.authentication.SessionAuthentication',  # session认证
    )
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 2 在视图函数中配置
    通过authentication_classess 来配置。
authentication_classes = [SessionAuthentication]
  • 1

权限的配置也有两种

  • 1 全局配置
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 2 局部配置

在具体的视图中通过permission_classes属性来设置

 permission_classes = (IsAuthenticatedOrReadOnly,) # 给具体的类视图配置权限
  • 1

默认提供的可选权限
AllowAny 允许所有用户
IsAuthenticated 仅通过认证的用户
IsAdminUser 仅管理员用户
IsAuthenticatedOrReadOnly 认证的用户可以完全操作,否则只能get读取

  • 也可自定义权限
    1 函数的形式
    def get_permissions(self):
        if self.action == "read":
            return (IsAuthenticated(),) # 返回的是一个元祖
        return(AllowAny(),)
  • 1
  • 2
  • 3
  • 4
  • 2 以类的形式:
class MyPermission(BasePermission):

    def has_permission(self, request, view):
        return True  # True 全部放行

    def has_object_permission(self, request, view, obj):
        """ 控制对obj 对象的访问权限,此案例解决所有对对象的访问"""
        if obj.id >6: # 不能访问id 大于6的对象的信息
            return False
        return True

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/71647
推荐阅读
相关标签
  

闽ICP备14008679号