• 权限管理之大致流程


    原理:
    1、简单管理
    2、角色多管理(就要设置权限)
      a. 登录
        - session中放置用户信息(检测是否已经登录)
        - session中放置权限信息(检测是否有权访问)
        {
          "/index.html":[get,delete,select ,update],
          "/order.html":[get,delete,select ,update],
        }
        - session中放置菜单,权限信息(用于生成多级的动态菜单)。就不用每次在数据库里面去取数据了
      b. 访问网站其他功能:http://www.baidu.com/xxx.html
        - 获取当前访问的url,request.path_info
        -
          匹配/xxx.html?md=get
          根session里面的权限信息进行匹配(检测是否有权访问)
          {
            "/index.html":[get,delete,select ,update],
            "/order.html":[get,delete,select ,update],
            "/xxx.html":[get,delete,select ,update],
          }
          如果匹配成功之后,在进行一次匹配
          第一次匹配的是url,第二次匹配的是方法


          request.permission_code = "get"
          request.permission_code = [get,delete]
          目的是传到视图函数,当视图函数写业务逻辑的时候根据这两个值来判定视图该怎么写

          ps:两次匹配的时候都是用中间件来实现的
      c.在视图中:
          得到这两个值,
          request.permission_code = "get" #业务逻辑的增加,修改等
          request.permission_code = [get,delete] #为了给前端显示功能按钮


      e.创建动态菜单【多级菜单】
          - 当前用户的权限(从数据库获取,但是这样每次请求数据库效率不高,可以放置在session中)
          - 所有的菜单 (从数据库获取)
          - 让权限和菜单实现挂靠
            这个菜单只是在页面上使用,推荐用simple_tag来用
            1、权限挂到菜单上
            2、菜单父子关系处理
            3、递归生成菜单
          辅助:
            css
            js


    基本使用:
      1、导入rbac
        - 表
        - 中间件
        - service 初始化操作
        - simple_tag

      2、注册app
      3、用户登录
          初始化权限信息:service.init_permission(request,user_id)
          本质就是吧权限的信息和菜单的信息放在session中
      4、在settings中配置中间件
      5、导入{% rbac_menu request %}
      其他配置
    ....

  • 相关阅读:
    Socket 的网络编程
    《Python 3.5从零开始学》笔记-第8章 面向对象编程
    Python 的8个关键要素
    分布式发布订阅模型网络的实现有哪些
    MongoDB知识整理
    C++模板类与Qt信号槽混用
    C++中 =default,=delete用法
    QT知识整理
    Python题整理
    STL库的应用
  • 原文地址:https://www.cnblogs.com/haiyan123/p/7986895.html
Copyright © 2020-2023  润新知