权限管理是后台管理系统中常见的功能,通常分为功能权限和数据权限。功能权限控制用户的操作,数据权限控制数据的显示。功能权限比较常用,而数据权限就很少见了。

那如果要实现数据权限控制,该怎么操作呢?

首先,我们要知道数据权限控制的本质是什么。如前面所说,数据权限控制的是数据的显示,而数据的显示不外乎是行显示和列显示,所以数据权限控制,实质是对行和列的控制。

在关系型数据库中,如MySQL中,行有WHERE子句控制,列由SELECT字段控制,所以,进一步分析,数据权限控制实质是对WHERE子句和SELECT字段进行控制。

如何控制WHERE子句和SELECT字段?

1、创建数据源

将每一种要控制的数据,设置成数据源,同时将数据源与数据表关联。如下:

数据级权限管理的作用(权限管理之数据权限)(1)

2、设置数据规则,将数据源与角色关联起来,以达到不同的角色,看到不同的数据。

数据级权限管理的作用(权限管理之数据权限)(2)

在前面的内容中,我们讲到,对行的控制实质是对WHERE子句的控制,因此,在设置行规则时,我们需要获取数据源关联的数据表的所有字段及类型,然后根据字段的不同添加不同的规则,如下:

数据级权限管理的作用(权限管理之数据权限)(3)

列控制与行控制有异曲同工之处,也需要获取数据源关联的数据表的所有字段,然后选择要展示的字段,如下:

数据级权限管理的作用(权限管理之数据权限)(4)

通过以上设置,一个数据规则就完成了,完成的数据规则,在数据库中的形式,如下所示:

数据级权限管理的作用(权限管理之数据权限)(5)

3、在需要进行数据权限控制的页面,根据登录用户的角色和关联数据表,查出数据规则,获取WHERE子句的数据和SELECT字段,然后拼接成一个完整的查询的SQL语句。

至此,数据权限的实现就完成了。当然,此实现只是简单的实现,如果想更加完善,体验更好,可能就需要大家再发挥一下想象了。


本文由“编码之道”原创,关注“编码之道”,获取更多知识

,