程序员的自我救赎---7.1:权限系统讲解

《前言》

(一) Winner2.0 框架基础分析

(二)PLSQL报表系统

(三)SSO单点登录

(四) 短信中心与消息中心

(五)钱包系统

(六)GPU支付中心

(七)权限系统

(八)监控系统

(九)会员中心

(十) APP版本控制系统

(十一)Winner前端框架与RPC接口规范讲解

(十二)上层应用案例

(十三)总结

《权限系统讲解》

在Winner2.0我们的权限系统是很老了,上次Jason看代码发现权限系统还是2006开发的。这也让我们萌生了对“权限系统”重构的念头。

无奈呼工作一直很忙,没有时间去重构它。并且重构更多时候是在操作界面上的重构,以及使用MVC翻抄一遍,最重要的是现在的权限系统还比较坚挺,没出过什么问题。

我们重点来说说权限系统的表设计,因为界面实在比较老,而且比较难看,如果我们重构之后我们再把他上到GitHub。

权限系统的表结构是非常简单的,基本和所有市面上教科书的权限系统是一样的,主要有五张表组成:

Trit_Role:角色表

Trit_RoleMember:角色成员表;

Trit_Function:功能表;

Trit_FunctionMember:功能成员表;

Trit_Right: 权限关联表;

额外还有两张系统表: Tnet_RegInfo(用户表),Tsystem_App(项目表)

这么说好像比较难理解,我们看一张图就清楚了:

trit_role:角色表,该项目中有什么角色比如:商城_商品上架员、商城_订单管理员。 不同的角色能进入的界面是不同的。并且外键关联项目表指定是哪个项目的权限;

trit_rolemember:角色成员表,为角色表的扩展表关联trit_role、关联用户表(nodeid),制定哪个用户拥有那个角色的身份;

trit_function:功能表,指定该项目中有什么功能比如:商城_管理订单,商城_查看销售报表。关键关联项目表,多项目情况下每个项目的功能不同;

trit_functionmember:功能成员表,为功能表的扩展表,制定某个功能具体能访问的页面路径;

trit_right: 权限关联表,关联角色与功能;

我们看到的权限系统可能有的比较复杂,我记得之前我们一直讲好的权限系统应该控制到按钮,如果是在Asp.net WebForm 中是不太好处理的,但是在MVC中我们使用特性类去验证一下

还是比较好处理的,但是相应的程序要去查询一次“权限系统”自然体验感要慢一点。 

这里关于是否要控制到按钮Winner这套权限系统的表结构是足够应对的,就看是否要支持到这一步了。我们现在开发项目中都没有去控制到按钮这个程度,总归是接触的项目不到这个层次。

最后我还贴一下,权限系统的界面图吧,给大家看看2006年开发的权限系统界面长啥样

什么成员关联,角色关联,功能管理 就不贴了。着实难看,我自己都接受不了。不过这个互查的界面和功能还是要说一下,因为这个非常好用。

它可以更加提供的一个角色名称查询出这个 角色有什么功能,然反向查出那些用户有这些角色的身份。同理也可以正向查询哪个用户有哪些角色的身份。

好了,差不多了。在下一篇《权限系统实际应用》中我再细讲一下,如何讲权限系统应用到每个项目中去。

这里就不贴源码了,等项目重构了,我再上一份到GitHub。

有兴趣一起探讨Winner框架的可以加我们QQ群:261083244。或者扫描左侧二维码加群。

原文地址:https://www.cnblogs.com/demon28/p/8176452.html