首页 > 有没有做过复杂权限设置的兄弟,帮忙出出主意!!

有没有做过复杂权限设置的兄弟,帮忙出出主意!!

我们遇到一个需求,需要权限控制能支持普通的角色、部门等,还需要支持二级授权和对数据进行授权,二级授权是指,用户自己上传的一个文档,上传后是私有的,但是他可以指定开放给某个部门或者某个指定的人有查看,编辑,下载等权限,这个时候需要一个管理者,如他的直接上级进行审核,审核过了还需要一个总的管理者,如CEO再进行审核,同时CEO具有一票否决权。都审核通过权限才会生效。
对数据授权是指,管理者可以指定某些数据给某些人,或者某些部门,同样的功能,具有不同权限的人,进来看到的数据不一样,只能看到已经授权给自己的那部分数据。

这样的需求有兄弟遇到过吗?有没有好的设计方案?谢谢了!


权限控制用基于RBAC的权限管理框架shiro实现再合适不过了,不过用的好坏也得看你水平啦


我的做法是给要发布文档设置一个是否发已经发布的状态,如果是已经发布的状态就配合acl进行控制;如果是审核状态(未发布),就建立审核日志,每条日志对应一个审核环节,每个环节记录发起人和接收人,只有审核日志中的人才能访问对应的问题,并进行相应的操作。给个参考数据库结构。

$sql = "create table if not exists xxt_article_review_log(";
$sql .= 'id int not null auto_increment';
$sql .= ',mpid varchar(32) not null';
$sql .= ',article_id int not null';
$sql .= ',seq int not null';
$sql .= ',mid varchar(32) not null';
$sql .= ',disposer_name varchar(255) not null';
$sql .= ',send_at int not null';
$sql .= ',receive_at int not null default 0';
$sql .= ',read_at int not null default 0';
$sql .= ',close_at int not null default 0';
$sql .= ',phase char(1) not null'; // Review|Typeset
$sql .= ",state char(1) not null"; // Pending|Disposing|Forward|Close
$sql .= ',remark text';
$sql .= ",primary key(id)) ENGINE=MyISAM DEFAULT CHARSET=utf8";
【热门文章】
【热门文章】