日期:2014-05-17  浏览次数:20454 次

该如何设置系统中不同模块间操作人员权限设置的问题
几年前给单位弄了个小系统,用了几年,领导觉得不错,现在要往里面添加两个模块,现在就是不同模块间人员权限不同该如何做。
比如操作人员A在这个模块是管理人员,有修改权限,但在另一个模块中又只是普通用户,只能查询,不懂这种情况一般是如何做的呢?谢谢!
------解决方案--------------------
Google OA权限设计
------解决方案--------------------
引用:
几年前给单位弄了个小系统,用了几年,领导觉得不错,现在要往里面添加两个模块,现在就是不同模块间人员权限不同该如何做。
比如操作人员A在这个模块是管理人员,有修改权限,但在另一个模块中又只是普通用户,只能查询,不懂这种情况一般是如何做的呢?谢谢!


在人员和功能之间,通常引入一个“角色”层定义,使得人员跟功能分离开。

例如你的程序中可能判断
if(IsInRole(CurrentUser,"可以管理A"))
{
    管理A();
}
else 
   thow new 没NotAuthorizedException("没有管理员模块的权限");

或者写
if(IsInRole(CurrentUser,"可以查询A"))
{
    查询A();
}
else 
   thow new 没NotAuthorizedException("没有查询此模块的权限");

这样,通过灵活地改变给每一个用户配置的一个“权限名称列表”,就能随时改变授权了。
------解决方案--------------------
有些人会喜欢多余地在搞一层,例如程序的不同代码要验证不同的“操作层”,然后又要让用户去配置“哪些操作适配哪些角色”,再让用户去配置“用户有哪些角色”,这其实就是多出来一层。

更有甚者更多!

搞OA的人里边,特别是一些学了7、8年软件(貌似做了几十个应用)但是其实做的实际应用的真正日常活跃用户很少的人,这些人容易空谈什么“权限管理系统”。最后搞得怨声载道,繁琐异常。

其实授权就应该是这样地好用:我只要拿出手机,从通讯录里选择员工,然后选择一个授权名称,再点击一下按钮,这就行了。

不要搞什么繁琐的“上百行成一几十列的矩阵”,更不要把这种矩阵再搞成三维的。
------解决方案--------------------
参考Windows对文件系统的权限设计。
每个模块类似一个文件夹/文件,可以单独设置用户或者角色的权限。