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. jquery列队动画简单演示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 【Flex】编辑器的缩放功能(绝对定位和相对定位)

    一.横向的ide拖动缩放效果 <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplic ...

  3. 【Egret】2D 使用中的一些疑难解决技巧!

    1.问题:声音在ios上无法播放    解决方法:①首先需要预加载一个声音                        ②然后目前只有点击之后才能播放声音,不能默认播放 2.问题:滚动条问题   解 ...

  4. JavaWeb总结(七)—JSTL标签库

    一.JSTL标签库介绍 JSTL标签库的使用时为了弥补HTML标签的不足,规范自定义标签的使用而诞生的.使用JSTL标签的目的是不希望在JSP中出现Java逻辑代码. 二.JSTL标签库的分类 1.核 ...

  5. 深入Web请求过程

    B/S网络架构 带来的好处: 1.客户端使用同一的浏览器. --浏览器的交互特性使其使用起来非常简便 2.服务器基于统一的http.  --简化.规范开发模式,大大节省开发成本.如tomcat ngi ...

  6. idea + mybatis generator + maven 插件使用

    idea + mybatis generator + maven 插件使用 采用的是 generator 的 maven 插件的方式 ~ 1 pom.xml mybatis其它配置一样,下面是配置my ...

  7. Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)

    这道题是一道爬虫练习题,需要爬链接http://tieba.baidu.com/p/2166231880里的所有妹子图片,点进链接看一下,这位妹子是日本著名性感女演员--杉本由美,^_^好漂亮啊,赶紧 ...

  8. 严格模式下的javascript

    arguments: ECMA5移除了实参对象(arguments),在非严格模式下函数里的arguments只是一个标识符,在严格模式下它变成了保留字.严格模式下无法使用arguments作为形参名 ...

  9. ios 视频/图片压缩

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  10. 浩哥解析MyBatis源码(九)——Type类型模块之类型处理器注册器(TypeHandlerRegistry)

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6709157.html 1.回顾 上一篇研究的是类型别名注册器TypeAliasRegist ...