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

  • 相关阅读:
    svn 回退/更新/取消至某个版本命令详解
    SVN版本回退
    用Visual Studio编辑Linux代码
    vim——打开多个文件、同时显示多个文件、在文件之间切换
    vim下的ctags和taglist等的使用和配置
    Uber优步北京第二、三组奖励政策
    Uber优步北京第一组奖励政策
    uber在限制新司机加入了,看看新政策把
    软件架构 "4+1" 视图模型
    软件体系结构经典问题——KWIC的分析和解决
  • 原文地址:https://www.cnblogs.com/aa1bb2/p/14088505.html
Copyright © 2011-2022 走看看