zoukankan      html  css  js  c++  java
  • rest_framework登录组件,权限组件

    昨日回顾:
    -HyperlinkedIdentityField(用来生成url),传三个参数
    -实例化序列化类的时候,BookSerializer(ret, many=True, context={'request': request})
    -序列化组件的数据校验
    -类比forms组件
    -局部(value是该字段的值)
    -validate_字段名(self,value)
    -全局钩子函数(通过校验值的字典)
    -validate(self,value)

    -认证
    -写一个类:
    class LoginAuth():
    # 函数名一定要叫authenticate,接收必须两个参数,第二个参数是request对象
    def authenticate(self, request):
    # 从request对象中取出token(也可以从其它地方取)
    token = request.query_params.get('token')
    # 去数据库过滤,查询
    ret = models.UserToken.objects.filter(token=token)
    if ret:
    # 能查到,说明认证通过,返回空
    # ret.user就是当前登录用户对象,一旦retrun了,后面的认证类都不执行了
    return ret.user,ret
    # 如果查不到,抛异常
    raise exceptions.APIException('您认证失败')

    -局部使用:
    -在视图类中加一行:
    -authentication_classes = [LoginAuth, ]
    -全局使用
    -在setting中配置:
    REST_FRAMEWORK={
    'DEFAULT_AUTHENTICATION_CLASSES':['app01.MyAuth.LoginAuth',]
    }
    -局部禁用:
    -在视图类中加一行:
    -authentication_classes = []

    -token表设置超时时间字段
    -token原理
    -'adfasdfasd'
    -'sdafasdfasf|{id:1,'name':}'
    -'asdfasdasd|2'


    -权限
    权限是什么?
    -写一个类
    class UserPermission():
    # message是出错显示的中文
    message='您没有权限查看'
    def has_permission(self, request, view):
    user_type = request.user.user_type
    # 取出用户类型对应的文字
    # 固定用法:get_字段名字_display()
    user_type_name = request.user.get_user_type_display()
    print(user_type_name)
    if user_type == 2:
    return True
    else:
    return False
    -使用
    -局部使用
    -在视图类中加一行:
    -permission_classes = [LoginAuth, ]

    -全局使用
    -在setting中配置
    REST_FRAMEWORK={
    'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.UserPermission',]
    }
    -局部禁用
    -在视图类中加一行:
    -permission_classes = [ ]


    作业:
    1 研究importlib
    2 不存数据库版的token
    3 上课讲的写一遍

  • 相关阅读:
    个人冲刺计划一周天详细
    软件小创意
    电梯调度小程序。
    敏捷开发一些百科。
    求二维数组的子数组中的最大值!
    求整数数组中子数组最大的和值!
    单元测试我们应该注意什么!
    分析一个文档(英语文章)中各个词出现的频率,并打印频率最高的前10个。
    有感而发
    冲刺一TD美景美图
  • 原文地址:https://www.cnblogs.com/fushaunglin/p/10116384.html
Copyright © 2011-2022 走看看