zoukankan      html  css  js  c++  java
  • RBAC权限管理

    from rest_framework.permissions import BasePermission
    from apps.user.models import User,Role,UrlInfo

    第一种方法#

    class SylPermissions1(BasePermission):

      message="当前用户没有权限1"

      def has_permission(self, request, view):

        uid=request.user.id
        user_obj=User.objects.filter(id=uid).first()
        user_role_obj=user_obj.roles.all()

         #获取的方法(GET,POST,PUT,DELETE)

        method=request.method

         #获取的路由

        url = request.path_info

        

        #拼接
        print(url+method)

        

        #如果不用判断方法(GET,POST......)下面的if,else不用写
        url_obj=UrlInfo.objects.filter(url=url+method).first()

        if url_obj:
          url_role_obj=url_obj.roles.all()    #正向查询roles外键.all()
        else:
          return False

        for i in user_role_obj:
          if i in url_role_obj:
            return True
        return False

    #第二种方法

    class SylPermissions2(BasePermission):

      message="当前用户没有权限2"

      def has_permission(self, request, view):

        uid=request.user.id
        user_obj=User.objects.filter(id=uid).first()
        user_role_obj=user_obj.roles.all()


        method=request.method
        url=request.path_info
        m_urls=url+method

        for i in user_role_obj:
          role_obj=i.urlsinfo.all()         #反向查询,url表里related_name="urlsinfo"

          for j in role_obj:
            if j.url == m_urls:
              return True

        return False

  • 相关阅读:
    ibatis 批量更新(一)
    eclipse tomcat路径更改后启动报错
    xftp Initialize Flexnet Service failed / Error code: 50003
    百度网盘 文件名中(文件)含有敏感词
    一人之下第二季百度云高清下载
    React Native Mac配置指南
    Androd自己定义控件(三)飞翔的小火箭
    关于职位规划
    SSH框架之Struts(3)——Struts的执行流程之核心方法
    HDU 4891 The Great Pan (字符串处理)
  • 原文地址:https://www.cnblogs.com/aa1bb2/p/14088505.html
Copyright © 2011-2022 走看看