Django day27 认证组件,权限组件()

一:认证组件

  1、写一个类

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('您认证失败')

 

   2、使用与禁用

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

 

  3、token表设置超时时间字段

token原理
        -'adfasdfasd'
        -'sdafasdfasf|{id:1,'name':}'
        -'asdfasdasd|2'

 

二:权限组件

  1、权限是什么?

    就是只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制

  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

 

  3、使用与禁用

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

 

posted @ 2018-12-13 21:56  温暖你的心  阅读(126)  评论(0编辑  收藏  举报