当前位置: 首页 > news >正文

python设置文件权限_python通用权限框架

EasyPermission

适用于由Django开发的网站的通用权限框架,只要设置好配置文件就快速做好权限管理,而且还支持各种条件的自定制扩展。

功能:

1、权限验证 -- 支持添加临时权限

支持临时分配权限

简单权限筛选:一个url对应一个url(可以是具体的字符串或者是一个正则表达式)

稍微复杂的筛选:url可以参数

究极筛选:可以定义钩子函数传入的是request对象,只需返回一个布尔值就能确定是否通过能权限(注:需要自己扩展)

2、可以检验是否登录

没有登录时会跳转到登录页面

3、生成菜单

根据权限信息生成的菜单,生成的菜单的可以有GET参数,视权限而定,还能生成由正则表达式构成的菜单(注:需要自己扩展)

注:生成的菜单放入到request对象的_menu_str属性里,使用时只需request._menu_str取值即可

使用:

1、下载easyPermission.py文件和 models.py文件,EasyPermission文件是主文件,models文件用于建立存放权限数据的数据库。

2、根据models建立数据库,注:要提供用户表,作为其他表的关联

3、用过Django的admin等方式为用户添加权限,具体是什么权限,那就要根据业务逻辑了

4、在项目的views中导入easyPermission,实例化easyPermission.EasyPermission,此时要传入配置文件(怎么配置参看 settings_doc.py文件)

5、使用对象的check_permission作为装饰器装饰函数(FBV、CBV)

6、完成使用

modeles.py的表说明

由于定义表的时候没有命名好,所以只能口述一波了

注:这个权限的基本原理是角色分配权限和用户分配权限

一个角色可以理解成一个组

Role --角色表 :分配权限的单位,一个角色拥有某些特定的权限

Role2User --用户分配角色表:用于用户表和角色表相关联

Action --提交方式表:记录提交方式的。如GET,POST

Permission -- url表:记录没有参数的绝对地址的url

Detail --详细操作表:定义url的GET参数

Hooks --钩子函数表:钩子函数的函数名,验证时会根据配置文件和函数名来找到对应的钩子函数

Action2Permission --权限表:对URL和提交方式进行绑定,这是一个最简单的权限

Action2Permission2Detail --权限分配详细操作表:为权限绑定GET参数

Action2Permission2Hooks --权限分配钩子表:为权限绑定钩子函数

Role2Action2Permission --角色分配权限:正式为角色绑定权限

User2Action2Permission --用户分配权限表:也可以直接为某些用户分配特殊的权限

Menu --菜单表:用于生成菜单,用于给URL(Permission表)绑定

相关文章:

  • wince车机刷系统_城会玩!一顿折腾给奥迪Q5车机加装AV视频输入成功玩上坦克大战...
  • 2007,走好长征路!
  • c++开发工程师是属于前端还是后端_编程第一课 了解软件开发过程和程序员的工作...
  • 专业手机游戏开发基础(1)
  • tcp只发送不接收会怎样_面试TCP协议灵魂拷问十二个(建议收藏)
  • 专业手机游戏开发基础(2)
  • c++ string类的常用方法_String类型及其常用方法(2)
  • anaconda rstudio安装后打不开_spyder打不开 安装anaconda 的tips
  • 任正非:实事求是的科研方向与二十年的艰苦努力(新年推荐)
  • 为什么使用依赖注入_一起来踩踩 Spring 中这个循环依赖的坑
  • 一个由CVS不区分大小导致的404问题
  • springboot profile_SpringBoot-基础
  • 设置列表框最小宽度且可随着内容变宽的方法
  • ajax怎么讲json对象传到后台_【JavaWeb】102:后台数据校验
  • 零基础学sql要多久_从零基础到独当一面的化妆师需要学多久?
  • [nginx文档翻译系列] 控制nginx
  • 《剑指offer》分解让复杂问题更简单
  • 【RocksDB】TransactionDB源码分析
  • CAP 一致性协议及应用解析
  • Js基础知识(四) - js运行原理与机制
  • js继承的实现方法
  • Koa2 之文件上传下载
  • Mysql5.6主从复制
  • Spring Boot MyBatis配置多种数据库
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vim 折腾记
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 程序员最讨厌的9句话,你可有补充?
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于字符编码你应该知道的事情
  • 基于组件的设计工作流与界面抽象
  • 力扣(LeetCode)21
  • 时间复杂度与空间复杂度分析
  • 思考 CSS 架构
  • 网络应用优化——时延与带宽
  • 一个SAP顾问在美国的这些年
  • ionic入门之数据绑定显示-1
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​虚拟化系列介绍(十)
  • #define与typedef区别
  • #微信小程序(布局、渲染层基础知识)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Python第六天)文件处理
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (南京观海微电子)——I3C协议介绍
  • (生成器)yield与(迭代器)generator
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)VC++中ondraw在什么时候调用的
  • (轉貼) UML中文FAQ (OO) (UML)