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

  • 相关阅读:
    HarmonyOS三方件开发指南(5)——Photoview组件
    【2021年1月20日公开课】 多设备共享涂鸦画板的鸿蒙实现方式
    看透Spring MVC源代码分析与实践
    这道面试题,90%的人都不会
    Java多线程编程核心技术
    Head First设计模式
    美团面试题:为什么能直接调用userMapper接口的方法?
    七周七并发模型
    框架VS架构,看两者异同
    京东技术解密
  • 原文地址:https://www.cnblogs.com/aa1bb2/p/14088505.html
Copyright © 2011-2022 走看看