接上文erp软件定制开发之用户权限模块之一我们继续。
有了上面三个对象,就可以设计数据库表了,比如用户表user,角色表role,权限表auth。三者之间的关系需要在数据表中体现出来,也就是数据库表的外键。
正常的设计是这样的,用户表有个角色字段role_id用来关联角色表,角色和权限表之间通过第三张表role_auth进行关联,这样设计可以做到一对多的设计。
表设计好了,程序对用户是否具备该功能的操作就可以进行判断了,用户登录系统之后,会将角色对应的权限查询出来,存储到session中,方便使用时调取。
我们在判断权限的时候,根据该操作预先定义的权限值去和session存储的值进行比对,如果包含了该权限值,那么我们就任务该用户有这个操作的权限,可以继续执行下面的逻辑,如果没有则表示没有这个权限,给出提示无权操作。当然,一般情况下, 用户对没有权限的模块是不可见的,这个可以在开发的时候设计好。
有了这个判断权限逻辑,就基本可以实现了用户-角色-权限的设计逻辑,当然实际情况可能复杂得多,这里只讨论基本情况,大家可以在遇到问题时具体定。
以上讨论了基本的设计架构,我们的目的不仅要设计这个功能,还要进行模块化设计,这样在后续的项目中才可以很好的复用。模块化意味着该功能和系统的设计耦合度不高,模块本身可以通过配置的方式进行扩展,可以通过某种方式,比如模块安装进行代码直接部署,或者是通过配置然后进行部署。能够很快的适应新的系统架构。
本文为原创,转发请标明出处。