tips:

事实证明。开发是一项苦力活。但是代码只有自己写的才是令人感到放心的。不过仅仅是从开发角度来说。从维护和安全角度来说,当然还是引入模块比较爽

但是引入的模块总会有一些问题。碰到的最大问题就是,暴露的只有接口,内部实现的时候调用了什么一概不知

百度很渣,python的资料用百度实在是不能查出来什么有用的东西。

这周工作基本上是做一个经典的权限管理模型,一个线上平台的应用场景:

公司-合作伙伴-合作伙伴下属账户

站点-权限组-用户

python代码量不是很多。但是建议使用蓝本对于整个web进行功能分离:

合作伙伴主账户的管理功能,涵盖:用户管理,站点分配,用户组管理。写到这里发现一个问题。系统的关键参数,比如用户名,最好是不能进行修改。同时在创建时进行校验。保证不越权

一般用户的访问功能:数据库性能管理;告警监控管理;个人信息修改(密码,邮箱等)

最高管理员权限:站点添加;合作伙伴管理

系统中权限按照二进制位进行分配。每个功能模块都设置了相应的权限。但是目前系统不需要更加详细的权限设置。但是这样设计是为以后进一步细分留下的空间。

说完这个接下来是sqlalchemy的经典model设计

其中User部分需要内置一些函数,用来实现一些验证。我觉得在这个地方做这些,是为了减少代码开销。对于性能来讲是差不多的。主要函数就是一些比如密码哈希加密,哈希解密,返回用户拥有权限这样的简单验证

当引入flask-login模块的时候,需要注意user表,flask-login默认使用

def load_user(user_id):
return User.query.get(int(user_id))

但是这边还不是很直观。因为这边传递的是一个形参。在527行的部分,其实内部实现的实参是取User表的id列。但是一般在多表结构设计的时候,基本上不会把所有的表的主键都用简单的id进行注册

至少我们是用例如partner_id;user_id这样的列名作为主键的。所以这个部分会涉及到修改

除此以外,flask-login所处的空间是项目(环境)的site-package包当中。因此内部引用的时候有一些相关文件的引用。我将这个包提取出来。然后修改所有我代码当中指向这个文件的引入。希望这个文件的移植性更好。但是结果是SQLAlchemy在构建类的时候就错误了。项目无法启动。所以暂时我又把这个模块给放回去了。

但是这个模块的功能无非也就是一些简单的装饰器。所以在开发的第二阶段。可能的情况下,还是自己写装饰器更好一些。

一般来说,装饰器类会写在app/decorator.py这个路径下面。这样在引用的时候更方便一些。当然在每个文件中写一些内部的装饰器类函数也是可以的。不过我感觉不方便管理。至少修改的时候就比较麻烦

装饰器+语法糖,对于开发效率和代码可读性是一个很大的提升。在学这个的时候明白了面向切面编程是一个什么东西。

def permission_required(permission):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not current_user.can(permission):
abort(403)
return f(*args, **kwargs)
return decorated_function
return decorator

这是比较简单的实现方法。除了这种外,还能用来在执行函数之后输出消息。先写到这里。下班。

flask-login ----系统权限设计部分小结的更多相关文章

  1. SpringCloud微服务实战——搭建企业级开发框架(二十一):基于RBAC模型的系统权限设计

    RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来间接地赋予用户权限,从而达到用户和权限解耦的目的. R ...

  2. web系统权限设计

    应该有七张表 1.appSystem 表: 主要在多系统中的 统一权限管理:主要就是系统的URL USE [Star_Permission] GO /****** 对象: Table [dbo].[A ...

  3. JEECMS 系统权限设计

    1.用户校验. 登录校验主要围绕着用户后台登陆的url拦截 a.围绕着用户登录过程中设计到两张用户表 jc_user:存储着用户的基本信息 jo_user:存储着用户登录.注册.更新时间及用户密码信息 ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  5. 解析大型.NET ERP系统 权限模块设计与实现

    权限模块是ERP系统的核心模块之一,完善的权限控制机制给系统增色不少.总结我接触过的权限模块,以享读者. 1 权限的简明定义 ERP权限管理用一句简单的话来说就是:谁 能否 做 那些 事. 文句 含义 ...

  6. SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...

  7. OA系统权限管理设计(转载)

    不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l         不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是 ...

  8. 简洁经常使用权限系统的设计与实现(一):构造权限菜单树的N(N>=4)种方法

    权限系统.Web开发常见标准子系统之中的一个.结合自己的一些思考和实践,从本篇開始权限系统的设计与实现之路. 近期,重构了项目的权限菜单构造过程,向前端返回json格式的权限树. 这一篇.仅仅是大致介 ...

  9. 26、生鲜电商平台-RBAC系统权限的设计与架构

    说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想 ...

随机推荐

  1. 大数据量场景下storm自定义分组与Hbase预分区完美结合大幅度节省内存空间

    前言:在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分 ...

  2. 关于SQL调优(Distinct 和 Exits)

    今天写了一段查询人员Id和人员编号的,由于需要从其他的表中取条件,因为人员表和另外的表对应的是一对多的关系,所以我使用了Distinct关键字对用户编号进行去重复,然后发现那个效率简直没法看,然后旁边 ...

  3. ReactJS入门2:组件状态

    React组件可以简单看做是包含props和states的函数. 上一节总结了创建新组建和数据属性的传递.本节主要讲解组件的状态. React认为UI是不同状态的展现.在React中,开发者只需更新组 ...

  4. Wpf学习之路……

    Wpf学习之路-- Wpf是 .net中一门做winform的技术,和传统的winform的区别在于: 1.         原来的winform就是拖控件,而wpf的控件都死自己拿标记语言(xaml ...

  5. Centos 在 Xshell里 vim的配置

    Centos里的VI只默认安装了vim-minimal-7.x.所以无论是输入vi或者vim查看文件,syntax功能都无法正常启用.因此需要用yum安装另外两个组件:vim-common-7.x和v ...

  6. Mac系统-java环境搭建_01

    一.安装jdk 下载地址:http://www.oracle.com/technetwork/Java/javase/downloads/index-jsp-138363.html 1.傻瓜式安装下一 ...

  7. 深入浅出分析MySQL索引设计背后的数据结构

    在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从 ...

  8. Web性能优化工具WebPageTest(二)——性能数据

    在前一篇<配置>完成后,点击“START TEST”,就可以开始测试,测试需要一段时间. 有时候可能还要排队,如下图所示,测试完成后可查看到测试结果. 一.Summary 1)优化等级 优 ...

  9. 恢复oracle数据库误删除数据的方法汇总

    学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些问题时,我开始寻找答案.今天主要以oracle数据库为 ...

  10. node express安装

    我们现在全局安装只需要安装这个命令行工具就可以,指令如下: npm install -g express-generator 这时我们就着手安装express框架,指令如下: express blog ...